IE7 이하에서 querySelectorAll 를 지원해주는 방법

Posted by Everyharu
2016. 11. 10. 16:52 IT/Javascript

IE7 을 쓸일은 요즘은 그닥 없을거다.

사실 아예 주요 포탈들도 IE7 지원을 안하기로 마음먹은 경우도 많고 기본적으로 IE8 부터이다.


하지만 종종 IE7 도 지원하게 만들고 싶은경우도 존재한다.

이 때 골치거리중 하나인 querySelectorAll 을 지원하기 위한 방법이다.


단지 javascript 코드를 한줄 추가해주자.


// IE7 support for querySelectorAll. Supports multiple / grouped selectors and the attribute selector with a "for" attribute. http://www.codecouch.com/
(function(d, s) {
	d=document, s=d.createStyleSheet();
	d.querySelectorAll = function(r, c, i, j, a) {
		a=d.all, c=[], r = r.replace(/\[for\b/gi, '[htmlFor').split(',');
		for (i=r.length; i--;) {
			s.addRule(r[i], 'k:v');
			for (j=a.length; j--;) a[j].currentStyle.k && c.push(a[j]);
			s.removeRule(0);
		}
		return c;
	}
})()



한줄이 아니라고? 그렇다면 한줄로 주도록 하지.

(function(d,s){d=document,s=d.createStyleSheet();d.querySelectorAll=function(r,c,i,j,a){a=d.all,c=[],r=r.replace(/\[for\b/gi,'[htmlFor').split(',');for(i=r.length;i--;){s.addRule(r[i],'k:v');for(j=a.length;j--;)a[j].currentStyle.k&&c.push(a[j]);s.removeRule(0)}return c}})()


querySelector 를 사용하기 전에 먼저 추가해주면 된다.