document.getElementsByTagName("*")
可以在IE/火狐/Opera上运行,但不能在Chrome和Safari上运行。
document.all
可以在IE/Chrom/Safari上运行,但不能在火狐上运行。
我该怎么处理呢?
发布于 2013-03-16 21:19:48
应避免使用document.all
,因为它不符合标准。相反,您可以对特定节点使用document.getElementById()
,或者使用$("*")
通过jQuery选择所有元素。
但是,如果您想要使用document.all,请确保从页面中删除<!DOCTYPE>
标记,并从<html>
标记中删除xmlns属性。
会像这样改变一切:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
to:
<html>
我已经在FireFox 19.0.2上测试过了,document.all
对我来说工作得很好。
原因:当你使用<!DOCTYPE>
标签时,你是在告诉浏览器你的网页不符合标准,而标准告诉你不要在脚本中使用document.all
,所以浏览器也不允许这样做。
但是当您想使用它时,您显然没有遵循标准,所以甚至不要费心添加<!DOCTYPE>
标记,否则document.all
将无法工作。
发布于 2010-01-20 02:31:31
试着这样做:
if (document.all !== undefined)
{
allElements = document.all;
}
else
{
allElements = document.getElementsByTagName("*");
}
或更短的版本
allElements = document.all ? document.all : document.getElementsByTagName("*");
发布于 2010-03-08 02:05:01
document.getElementsByTagName()
在所有现代浏览器(所有比IE5更新的浏览器)中都能完美地工作。
如果它在Chrome或Safari中不起作用,那么它很可能只是你在其他地方遇到的错误的症状。
https://stackoverflow.com/questions/2095966
复制相似问题