1

我有以下代码:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        var script_obj = document.getElementsByTagName('script')
        alert(typeof script_obj);
    });
</script>

当我在 Firefox (v21) 和 Chrome (v29) 中运行它时,我得到object了结果,但在 Safari (v5) 中我得到了function.

为什么是这样?!

在我的脚本的其余部分中,我正在迭代script_obj以获取.src数据,但是我count确定haystack(ie script_obj) 长度的函数有一个检查,false如果 thehaystack不是 anarray或 an则返回object,因此它在 Safari 中失败。有没有另一种方法可以代替使用document.getElementsByTagName('script')?!

4

1 回答 1

2

document.getElementsByTagName()返回一个NodeList。虽然 NodeList 不是 Array,但它确实像 Array 一样具有长度属性。所以你不需要做任何特别的事情来计算其中的项目数。不确定您的计数功能在做什么,但您可以这样做:

> var script_obj = document.getElementsByTagName('script');
> alert(script_obj.length); // will alert '22' or whatever
于 2013-08-23T15:03:54.743 回答