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

Javascript 使用getElementsByTagName获取脚本标记在不同浏览器中不一致,javascript,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 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>

$(文档).ready(函数(){
var script_obj=document.getElementsByTagName('script')
警报(脚本类型_obj);
});
当我在Firefox(v21)和Chrome(v29)中运行它时,我得到了
对象
,但在Safari(v5)中我得到了
函数

这是为什么


在脚本的其余部分中,我正在迭代
script\u obj
以获取
.src
数据,但是我的
count
函数决定了
干草堆的长度(即
script\u obj
)如果
haystack
不是
array
对象,则检查返回
false
,因此在Safari中失败。有没有其他方法可以代替使用
document.getElementsByTagName('script')

document.getElementsByTagName()
返回一个。尽管节点列表不是数组,但它与数组一样具有长度属性。因此,您不需要做任何特殊的事情来计算其中的项目数。不确定count函数在做什么,但您可以这样做:

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

在更改任何内容之前:生产代码中的
var
语句后面是否有分号?如果没有,请添加它,然后再次测试。只需添加到问题中,结果是IE10和Opera15中的
object
。还有一个
文档。脚本
HTMLCollection至少在IE、FF、Chrome和Opera中可用。。。谢谢各位。实际上,
count
函数在
时返回了
false
!数组&!对象
,因此我将其更新为同时检查
.length
,并且仅当长度无效时才返回
false
。现在可以用了。但其他类型也有
.length
,如
函数
字符串
。我假设OP是在尝试确保传递一个类似数组的结构。谢谢您的简短而清晰的回答。我为我的
count
函数添加了一个额外的测试。