Javascript 为什么';字符串';[0]在ie8+;IIS7.5而不是其他浏览器或本地文件?

Javascript 为什么';字符串';[0]在ie8+;IIS7.5而不是其他浏览器或本地文件?,javascript,internet-explorer-8,iis-7.5,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> </

考虑以下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>
当我在IIS7.5上托管此文件时,我在Chrome中仍然得到相同的结果,但ie8给出了以下结果:

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

这怎么可能呢?

好的,我发现这是因为兼容性视图。Internet explorer是标准配置(我想,我不是这台笔记本电脑的所有者),可以在兼容性视图中显示所有内部网页面。要强制它使用ie8兼容性视图,我必须向head元素添加以下元标记:

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

您也可以在“页面”>“兼容性视图设置”下关闭此选项

把我带向正确的方向

编辑:我建议web开发人员在ie8中保留此选项,因为大多数用户都会选中它。这样,您将在开发周期中捕获这些错误


EDIT2:sv_in是正确的
IE=edge
更干净。

Jan,为了补充您自己的答案,启用兼容性视图的更符合标准的方法是在文档开头使用标准doctype

<!DOCTYPE html>


这是HTML5 doctype,也应该让您进入标准模式。

出于好奇,我测试了这个答案。它不起作用。internet explorer中的设置似乎覆盖了任何doctype信息。奇怪的是,我以前也用过它。这里有一篇文章澄清了这一点:可能是您的文档中有其他东西打破了标准模式。也许它必须验证?不,它验证的是ie。不管文档类型如何,ie都会在兼容性视图中显示每个intranet页面。除非您使用metatag强制它。将
content
属性设置为
IE=100
是可以的,但是在我看来,
IE=edge
会更好。此值将选择最新的IE版本渲染(尽管它也是由您自己完成的)。事实上,有趣的是:你引用的页面在某个地方也使用了我的方法,在这一段中:你的页面更干净,所以我更新了我的答案。我怀疑msdn页面在我发布我的答案后已被更新,因为我想我是从该页面复制的。
<!DOCTYPE html>