首页 > 代码库 > 让IE6、IE7支持querySelectorAll和querySelector方法

让IE6、IE7支持querySelectorAll和querySelector方法

 querySelector 和 querySelectorAll 方法是 W3C Selectors API 规范中定义的。他们的作用是根据 CSS 选择器规范,便捷定位文档中指定元素。
目前几乎主流浏览器均支持了他们。包括 IE8(含) 以上版本、 Firefox、 Chrome、Safari、Opera。

 关于querySelector 和 querySelectorAll 方法的使用,请参考各浏览器中querySelector和querySelectorAll的实现差异和javascript高级选择器querySelector和querySelectorAll两篇文章。

 怎么让IE6、IE7也支持querySelectorAll和querySelector方法呢,请看下面的代码:

if (!document.querySelectorAll) {    document.querySelectorAll = function (selector) {        var doc = document,            head = doc.documentElement.firstChild,            styleTag = doc.createElement(‘STYLE‘);        head.appendChild(styleTag);        doc.__qsaels = [];        if (styleTag.styleSheet) {   // for IE            styleTag.styleSheet.cssText = selector + "{x:expression(document.__qsaels.push(this))}";        } else {                // others            var textnode = document.createTextNode(selector + "{x:expression(document.__qsaels.push(this))}");            styleTag.appendChild(textnode);        }        window.scrollBy(0, 0);        return doc.__qsaels;    }}if (!document.querySelector) {    document.querySelector = function (selectors) {        var elements = document.querySelectorAll(selectors);        return (elements.length) ? elements[0] : null;    };}if (typeof HTMLElement != "undefined") {    HTMLElement.prototype.querySelector = document.querySelector;    HTMLElement.prototype.querySelectorAll = document.querySelectorAll;}else {    var a = document.getElementsByTagName("*"), l = a.length, i;    for (i = 0; i < l; i++) {        a[i].querySelector = document.querySelector;        a[i].querySelectorAll = document.querySelectorAll;    }}

 

  文件下载:  点击此处下载

 

  文件使用:

  <!--[if lte IE 8]>
  <script type="text/javascript" src="http://www.mamicode.com/js/IE6Fix.js"></script>
  <![endif]-->

  

 参考资料:

  qsa-polyfill-ie7.js
  querySelectorAll shim for non-IE browsers
  querySelector.polyfill.js

让IE6、IE7支持querySelectorAll和querySelector方法