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
函数添加了一个额外的测试。