2013-03-28 2 views
0

IE 모드에서 렌더링하는 페이지에 대한 북마크릿을 만들려고합니다. 페이지의 소스를 제어 할 권한이 없으므로 Doctype을 변경하라는 메시지가 표시되지 않습니다.Internet Explorer Quirks 모드의 클래스 별 요소 선택

어쨌든 클래스에 의해 요소를 가져 오려고하지만 getElementsByClassName 및 querySelectorAll이 쿼크 모드에서 작동하지 않는 것으로 보입니다. 다른 방법으로 돔을 걷지 못하게 할 수 있습니까?

+0

polyfill : https://gist.github.com/stereobooster/2397759 – epascarello

+0

'getElementsByClassName'을 (를) 사용 하시겠습니까? –

+0

@epascarello :이 polyfill도 DOM을 걷지 않습니까? – GitaarLAB

답변

3

querySelector- 을 수행 할 수없는 브라우저에 대해서만 유틸리티를 만들 수 있습니다.이 예제는 노드 목록이 아닌 Array를 반환합니다.

function classReunion(classname, tag, parent){ 
    var A= [], elements, L, who, 
    rx= RegExp(/'\\b'+classname+'\\b'); 
    tag= tag || '*'; 
    parent= parent || document; 
    elements= parent.getElementsByTagName(tag); 
    L= elements.length; 
    while(L){ 
     who= elements[--L]; 
     if(rx.test(who.className)) A.push(who); 
    } 
    return A; 
} 

오래된 브라우저는 클래스를 기준으로 요소 그룹을 수집하기 위해 dom을 '걷는'것에 의존합니다.

+0

이것은 내가 본 중에 가장 좋은 버전입니다. 그리고 여러분은 제가 처음으로 루프 반복기를 사용하면서 대문자 L을 사용하는 것을 보았습니다. 고마워, 나는 충분히 upvote 수 없습니다! – GitaarLAB

+0

감사합니다. 선생님. –