IE8奇怪的行为,我的问题还是bug?

时间:2010-11-27 11:09:37

标签: javascript internet-explorer-8

好的家伙,这是在闯入,

我正在测试此页面

http://static.nemesisdesign.net/demos/ie8-strange/test.html

在IE8 / Windows XP上。

这是代码:

<!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>

如果我用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>

工作正常。 这只发生在IE 7/8上,没有在IE6上测试。

你怎么看? 它也发生在你身上吗?或者只是我的浏览器疯了?

加成

你是说这只是没有使用导致错误的var前缀? 我很抱歉,但你错了,你没有花时间测试代码。

我上传了一个test2页面 http://static.nemesisdesign.net/demos/ie8-strange/test2.html 与随后的cocde

<!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>

工作正常。

那么实际导致错误的是什么?不带var前缀的变量名与DIV元素的ID具有相同的名称。

这不奇怪吗?

4 个答案:

答案 0 :(得分:2)

可能this SO-question的答案有帮助吗?

答案 1 :(得分:1)

您应始终在变量声明之前加上var来指定其范围,否则您可能会发现不同浏览器之间的行为不一致。

答案 2 :(得分:0)

我认为IE中的JavaScript解释器比FireFox和其他版本稍微严格一些,这意味着脚本在变量定义行时会返回错误。放入var将确保 变量

使用var

声明所有变量是一种很好的做法

詹姆斯

修改

目前我无法访问IE,但我建议您将<script>代码更改为<script type="text/javascript">

答案 3 :(得分:0)

使用var声明变量而不是仅插入其名称