2011-01-25 3 views
1

Firefox 및 Chrome에서 새로운 웹 응용 프로그램을로드하면 탭 스트립을 찾을 수 없다는 경고가 나타납니다. , 파이어 폭스와 크롬 모두에서IE에서이 코드가 작동하고 Firefox와 Chrome에서 오류가 발생하는 이유는 무엇입니까?

function initializeTabStrip() { 
    var tblList = document.getElementsByTagName("table"); 
    var tabStrip = null; 
    for (var i = 0; i < tblList.length; ++i) { 
     if (typeof (tblList[i].tabStripRoot) != "undefined") { 
      tabStrip = tblList[i]; 
      break; 
     } 
    } 
    if (tabStrip) { 
     window.tabStrip = new TabStrip(tabStrip); 
    } 
    else { 
     alert("couldn't find tabstrip"); 
    } 
} 

항목을 찾아 제대로을 통해 수행하는 코드의 같은 섹션 Internet Explorer에서 반면, undefined로까지 typeof (tblList[i].tabStripRoot) 온다 : 코드를 통해 다음 나는이 기능을 발견했다.

Firebug와 IE의 개발자 툴바 스크립트 디버깅 도구를 사용하여 'tabStripRoot'가 무엇인지 알아 내려고 시도했지만 아무런 행운이 없었습니다.

JavaScript 전문가는 세 가지 브라우저 중 하나가 작동하는 이유에 대해 나에게 어떤 방향을 제시 할 수 있습니까?

도움 주셔서 감사합니다.

답변

3

DOM 요소의 속성으로 임의의 특성에 액세스하는 비표준 능력에 의존하고 있습니다.

표준 호환 브라우저에서 속성에 액세스하려면 someElement.tabStripRoot을 쓸 수 없습니다.

tblList[i].getAttribute('tabStripRoot')으로 변경하십시오.

+0

좀 더 설명해 주시겠습니까? 감사! – Chris

+1

그는 custom atttribute (tabStripRoot)가 MSIE의 속성으로 만 작동하지만 표준 호환 브라우저에서는 작동하지 않는다고 말합니다. 아, 그리고 그가 말했듯이, 그냥 코드로 바꾸면 모든 브라우저에서 작동 할 것입니다. – Christian

+0

getAttribute 코드를 변경하면 경고 발생이 중지되지만 목록의 모든 요소를 ​​순회합니다. "tabStripRoot"는 "tabstriproot"와 같지 않으므로 "getAttribute()"는 대소 문자를 구분합니까? – Chris

관련 문제