Safari浏览器不支持element.querySelector querySelectorAll这两个原生的dom选择器?

发布于 2022-09-02 21:00:57 字数 1090 浏览 15 评论 0

document.querySelector可以运行
element.querySelector 会提示"undefiend function querySelecotr"
你们有遇到这个问题吗?


代码如下,是在mac OSX 10.10.5 safari 9.1.1 下运行这段JS。

var 
   dealers = TOOLKIT.objectToArray(document.querySelector('.order-panel').querySelectorAll('.panel-default')),//这里正常,因为dom对象是document
   avaliable_dealers = dealers.filter(function(dealer_item){
       var
          js_product = TOOLKIT.objectToArray(dealer_item.querySelectorAll('.js_product'));
       return js_product.some(function(js_product_item){
           return js_product_item.querySelector('.js_checkbox').checked;
       });
   });
 ....            

TOOLKIT.objectTOArray是将dom对象强制转换成数组的一个方法,代码如下:

    TOOLKIT.objectToArray = function(obj){
        var
            arr = [],
            index,
            type = typeof(obj);
        if(type == 'object' && !Array.isArray(obj)){
            for(index in obj){
                if(obj.hasOwnProperty(index)){
                    arr.push(obj[index])
                }
            }
        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蓝色星空 2022-09-09 21:00:57

支持的哦^_^

当然,你浏览器版本未知哈!

你可以在Safari中打开这个页面,打开调试模式,点击“调试器”,输入:

document.querySelector('[data-id="1010000005730398"]').querySelector('a');

你就会看到输出结果。

我个人猜测,是你第一级获取dom对象就出了问题。

灯下孤影 2022-09-09 21:00:57

支持的。
class前面加

.

id前面加

#

就跟使用jQuery一样

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文