严格的doctype阻止了对FireFox中DOM变量的访问
题
我不知道这是一个众所周知的“东西”还是什么新东西,无论在哪个版本的Firefox中它也只是更新了 - 但在任何一种情况下我都不知道如何谷歌这个问题所以我会有在这里问一下。
我的DOM中有一个DIV,我试图通过id直接访问,以这种最简单的形式:
alert(btnTest.id);
这在所有浏览器中都能正常工作,但是导致firefox出现问题,导致浏览器处于一个奇怪的“破坏”状态。
我得到的错误是'btnTest未定义'。我没有在Safari,Internet Explorer或Chrome中收到此错误。
我认为我的HTML标签不匹配,或javascript花括号或其他缺失的东西。在剥离完所有内容后,我尝试删除DOCTYPE。突然在Firefox(v 3.0.10)中,它开始按预期返回正确的ID。
发生了什么事! ?肯定'严格'模式应该允许我访问命名元素,如果没有,那么为什么所有其他浏览器都允许我。
注意:我可以使用$('#btnTest')[0] .id轻松解决这个问题,这是我现在必须要做的事情,直到我能找到一个更好的解决方案。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" class="blueCircles">
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(function() {
alert("ID retrieved through jQuery: " + $('#btnTest')[0].id);
alert("ID retrieved by accessing global variable: " + btnTest.id);
});
</script>
</head>
<body>
<div id="btnTest">
</div>
</body>
</html>
不隶属于 StackOverflow