文章目录
首页
Javascript
Html
Css
Node.js
Electron
移动开发
工具类
服务端
浏览器相关
前端收藏
其他

IE6/7浏览器兼容querySelectorAll、 querySelector

2016年05月28日 发布 阅读(342) 作者:懒炖
兼容性

IE6/7浏览器兼容querySelectorAll、 querySelector
  1. if (!document.querySelectorAll) {
  2. document.querySelectorAll = function (selectors) {
  3. var style = document.createElement("style"), elements = [], element;
  4. document.documentElement.firstChild.appendChild(style);
  5. document._qsa = [];
  6. style.styleSheet.cssText = selectors + '{x-qsa:expression(document._qsa && document._qsa.push(this))}';
  7. window.scrollBy(0, 0);
  8. style.parentNode.removeChild(style);
  9. while (document._qsa.length) {
  10. element = document._qsa.shift();
  11. element.style.removeAttribute('x-qsa');
  12. elements.push(element);
  13. }
  14. document._qsa = null;
  15. return elements;
  16. };
  17. }
  18. if (!document.querySelector) {
  19. document.querySelector = function (selectors) {
  20. var elements = document.querySelectorAll(selectors);
  21. return (elements.length) ? elements[0] : null;
  22. };
  23. }
  24. // 用于在IE6和IE7浏览器中,支持Element.querySelectorAll方法
  25. var qsaWorker = (function () {
  26. var idAllocator = 10000;
  27. function qsaWorkerShim(element, selector) {
  28. var needsID = element.id === "";
  29. if (needsID) {
  30. ++idAllocator;
  31. element.id = "__qsa" + idAllocator;
  32. }
  33. try {
  34. return document.querySelectorAll("#" + element.id + " " + selector);
  35. }
  36. finally {
  37. if (needsID) {
  38. element.id = "";
  39. }
  40. }
  41. }
  42. function qsaWorkerWrap(element, selector) {
  43. return element.querySelectorAll(selector);
  44. }
  45. // Return the one this browser wants to use
  46. return document.createElement('div').querySelectorAll ? qsaWorkerWrap : qsaWorkerShim;
  47. })();
版权声明:本站文章除特别声明外,均采用署名-非商业性使用-禁止演绎 4.0 国际 许可协议,如需转载,请注明出处

评论

  •