Javascript IE8奇怪的行为,我的问题还是错误?
好了,伙计们,这很有趣 我正在测试这个页面 在IE8/WindowsXP上 代码如下:Javascript IE8奇怪的行为,我的问题还是错误?,javascript,internet-explorer-8,Javascript,Internet Explorer 8,好了,伙计们,这很有趣 我正在测试这个页面 在IE8/WindowsXP上 代码如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="content-language" content="en"> <title&g
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="content-language" content="en">
<title>Test</title>
</head>
<body>
<div id="thisgivesmeanerror">test</div>
<script>
thisgivesmeanerror = 'test';
alert('this alert won\'t be fired on my IE8, what about yours?');
</script>
</body>
</html>
试验
测试
thisgivesmeanerror='测试';
警报('此警报不会在我的IE8上触发,你的呢?');
如果我用IE8打开这个页面,我会得到一个错误。
如果我将脚本的代码更改为:
<script>
// note that I added var prefix
var thisgivesmeanerror = 'test';
alert('this alert won\'t be fired on my IE8, what about yours?');
</script>
//注意,我添加了var前缀
var thisgivesmeanerror='测试';
警报('此警报不会在我的IE8上触发,你的呢?');
它很好用。
这只发生在IE7/8上,没有在IE6上测试
你觉得怎么样?
你也会这样吗?还是只是我的浏览器疯了
附加
你是说没有使用导致错误的var前缀?
对不起,伙计们,你们错了,你们没有花时间测试代码
我上传了一个test2页面
用下面的代码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="content-language" content="en">
<title>Test 2</title>
</head>
<body>
<div id="thisgivesmeanerror">test</div>
<script>
thisdoesntgiveanyerror = 'test';
alert('This alert will be fired correcly');
</script>
</body>
</html>
测试2
测试
thisdoesntgiveanyerror='test';
警报(“将正确触发此警报”);
那很好
那么究竟是什么导致了这个错误呢?不带var前缀的变量名与DIV元素的ID具有相同的名称
这不是很奇怪吗?您应该始终在变量声明之前加上
var
来指定它们的范围,否则您可能会发现不同浏览器之间存在不一致的行为。您应该始终在变量声明之前加上var
来指定它们的范围,否则您可能会发现不一致的行为不同浏览器之间。我认为IE中的JavaScript解释器比FireFox和其他浏览器上的要严格一些,这意味着脚本在变量定义行中返回错误。将var
放入将确保它实际上是一个变量
使用var
詹姆斯
编辑
目前我无法访问IE,但我可以建议您将
标记更改为
我想说IE中的JavaScript解释器比FireFox和其他浏览器上的稍严格,这意味着脚本在变量定义行时返回错误。将var
放入将确保它实际上是一个变量
使用var
詹姆斯
编辑
我现在没法去,但是我可以建议您将
标记更改为
使用var
来声明变量,而不是仅仅插入它们的名称使用var
来声明变量,而不是仅仅插入它们的名称可能是有帮助的答案?可能是有帮助的答案?是的,变量的范围非常重要。如果在声明变量时不使用var
,IE8可能会使用其他同名变量,如示例中的div id。是的,变量的范围非常重要。如果在声明变量时不使用var
,IE8可能会使用其他同名变量,如示例中div.trusted的id,但无法解决test.html中的问题-您还应该知道,在HTML5中,te type属性不是必需的+1感谢类型提示。至于原版,恐怕我已经没有主意了。很抱歉尝试过但没有解决test.html中的问题-您还应该知道,在HTML5中,te type属性不是必需的+1感谢类型提示。至于原版,恐怕我已经没有主意了。很抱歉