为什么'string'[0]在ie8 + IIS7.5上的行为与其他浏览器或本地文件不同?

时间:2010-10-21 08:33:27

标签: javascript internet-explorer-8 iis-7.5

考虑以下Html文件:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <title>test</title>
        <style type="text/css">

        </style>
    </head>
    <body>
        <script type="text/javascript">
            alert('' +
                '\'test\'[0] = \'' + 'test'[0] + '\'\n' +
                '\'test\'.charAt(0) = \'' + 'test'.charAt(0) + '\'\n'
            );
        </script>
    </body>
</html>

当我在本地计算机上打开此文件时,它会提供以下输出(在ie8和Chrome中):

'test'[0] = 't'
'test'.charAt(0) = 't'

当我在IIS7.5上托管此文件时,我仍然在Chrome中获得相同的结果,但ie8给出了以下结果:

'test'[0] = 'undefined'
'test'.charAt(0) = 't'

这怎么可能?

2 个答案:

答案 0 :(得分:0)

好的,我发现它是由于兼容性视图。 Internet Explorer是标准配置(我认为,我不是这台笔记本电脑的拥有者),可以选择在兼容性视图中显示所有内部网页。为了强制它使用ie8兼容性视图,我不得不在head元素中添加以下元标记:

<meta http-equiv="X-UA-Compatible" content="IE=edge" > <!-- IE8 mode -->

您也可以在“网页”&gt;下关闭此选项'兼容性视图设置'

This question让我朝着正确的方向前进。

编辑:我建议网络开发人员在ie8中选中此选项,因为大多数用户都会检查它。这样您就可以在开发周期中捕获这些错误。

EDIT2: sv_in是对的。 IE=edge更清洁。

答案 1 :(得分:0)

Jan,只是为了添加您自己的答案,更符合标准的方法是启用兼容性视图,只需在文档开头使用标准文档类型。

<!DOCTYPE html>

哪个是HTML5 doctype,也应该让你进入标准模式。