使用getElementsByTagName获取脚本标记在浏览器中不一致

时间:2013-08-23 14:49:15

标签: javascript

我有以下代码:

<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的长度(即如果script_obj不是falsehaystack,则array)会返回object,因此在Safari中失败。有没有其他方法可以做到这一点,而不是使用document.getElementsByTagName('script')?!

1 个答案:

答案 0 :(得分:2)

document.getElementsByTagName()会返回NodeList。虽然NodeList不是数组,但它确实具有类似于数组的长度属性。因此,您无需执行任何特殊操作来计算其中的项目数。不知道你的计数功能在做什么,但你可以这样做:

> var script_obj = document.getElementsByTagName('script');
> alert(script_obj.length); // will alert '22' or whatever