博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IE6、IE7兼容querySelectorAll和querySelector方法-最终版本
阅读量:5424 次
发布时间:2019-06-15

本文共 1957 字,大约阅读时间需要 6 分钟。

querySelector 和 querySelectorAll 方法是 W3C Selectors API 规范中定义的。他们的作用是根据 CSS 选择器规范,便捷定位文档中指定元素。

目前几乎主流浏览器均支持了他们。包括 IE8(含) 以上版本、 Firefox、 Chrome、Safari、Opera。

 

 querySelector 和 querySelectorAll 方法很好用,可惜IE6、IE7不支持,怎么让IE6、IE7也支持querySelectorAll和querySelector这两个方法呢,请看下面的代码:

if (!document.querySelectorAll) {    document.querySelectorAll = function (selectors) {        var style = document.createElement('style'), elements = [], element;        document.documentElement.firstChild.appendChild(style);        document._qsa = [];        style.styleSheet.cssText = selectors + '{x-qsa:expression(document._qsa && document._qsa.push(this))}';        window.scrollBy(0, 0);        style.parentNode.removeChild(style);        while (document._qsa.length) {            element = document._qsa.shift();            element.style.removeAttribute('x-qsa');            elements.push(element);        }        document._qsa = null;        return elements;    };}if (!document.querySelector) {    document.querySelector = function (selectors) {        var elements = document.querySelectorAll(selectors);        return (elements.length) ? elements[0] : null;    };}// 用于在IE6和IE7浏览器中,支持Element.querySelectorAll方法var qsaWorker = (function () {    var idAllocator = 10000;    function qsaWorkerShim(element, selector) {        var needsID = element.id === "";        if (needsID) {            ++idAllocator;            element.id = "__qsa" + idAllocator;        }        try {            return document.querySelectorAll("#" + element.id + " " + selector);        }        finally {            if (needsID) {                element.id = "";            }        }    }    function qsaWorkerWrap(element, selector) {        return element.querySelectorAll(selector);    }    // Return the one this browser wants to use    return document.createElement('div').querySelectorAll ? qsaWorkerWrap : qsaWorkerShim;})();

 参考资料:

  

  
  

转载于:https://www.cnblogs.com/zhoudawei/p/7097467.html

你可能感兴趣的文章
数据平滑
查看>>
奇异值分解
查看>>
快速傅里叶变换模块(fft)
查看>>
随机数模块(random)
查看>>
杂项功能(排序/插值/图像/金融相关)
查看>>
pandas核心
查看>>
线性回归
查看>>
机器学习学习索引
查看>>
多项式回归
查看>>
Python-字符串
查看>>
MySQL8.0安装以及介绍(二进制)
查看>>
MySQL权限系统
查看>>
Python-集合
查看>>
转:标签中的href如何调用js
查看>>
CrawlSpiders简介
查看>>
面向对象编程
查看>>
django-rest-framework 视图的使用规则 总结分享
查看>>
drf 访问文档出现错误'AutoSchema' object has no attribute 'get_link'
查看>>
django-rest-framwork 错误信息整理
查看>>
第一讲 评估类模型之层次分析法
查看>>