2009-11-20 7 views
0
내가 브라우저를 감지하고 스타일을 적용하려고

,설정 스타일

alert(BrowserDetect.browser); 
if(BrowserDetect.browser == "Opera") { 
    document.getElementById(myBox).style.paddingTop = "5px"; 
} 

경고는 브라우저가 정확하게 이름을하지만 왜 스타일이되지 적용지고 표시?

+0

언제 전화가 오나요? "myBox"요소가 아직 존재하지 않을 수 있습니까? –

+1

브라우저 이름 스니핑은 거의 항상 끔찍한 생각입니다. Opera에서 여분의 패딩을 사용하여 해결하려는 문제는 무엇입니까? CSS 수정이 더 쉽습니다. – bobince

답변

2

if 내부에 경고를 추가하고 실행되는지 확인해보십시오. 가능성은 약 Opera 문자열 주위에 공백이 있습니다.

+0

if 문에서 경고하지만 여전히 스타일은 적용되지 않습니다. 다른 스타일도 적용 해 보았습니다. – Shishant

+1

나는 그것을 의심한다. 그는 QuirksMode 브라우저 탐지 JS (http://quirksmode.org/js/detect.html)를 사용하고있는 것으로 보입니다. 꽤 견고합니다. –

+0

동일한 스크립트를 사용하고 있습니다. – Shishant

1

alert() 전화의 복사본 두 개를 if 문안에 넣으십시오. 하나는 스타일 지정 이전에 하나, 다른 하나는 스타일 지정 앞에 있습니다. 내가 두 번째는 여러 가지 이유로, 발생하지 않는 것을 발견 것 같아요 : 변수 myBox

  • myBox 존재하지 않는

    1. 는 유효한 DOM 요소의 ID가 아닌 값을 가지고
    2. myBox 유효한 요소 이름 않지만, 블록 형 요소가 아닌, 그래서 패딩이 적용되지 않습니다 또한 파이어 폭스와 같은 고체 JS 디버거와 다른 브라우저에서 동일한 코드를 실행 시도 할 수 있습니다

    Develop tools ena와 Firebug 또는 Safari 피를 흘 렸어. (Preferences | Advanced.) 그러면 스타일 지정 문제가 더 빨리 나타날 수 있습니다.

  • +0

    다른 요소에 스타일을 적용 할 수 없습니다. id myBox가 있습니다. – Shishant

    +1

    마지막 문장은 ... id = "myBox"인 HTML 요소가 있다는 것을 의미합니까? 그렇다면 자바 스크립트 구문 오류입니다. 대신 getElementById ('myBox')를 사용해야합니다. 작성한대로 myBox는 요소의 ID를 포함하는 문자열 변수 여야합니다. –

    관련 문제