Javascript 为什么';字符串';[0]在ie8+;IIS7.5而不是其他浏览器或本地文件?
考虑以下Html文件: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> </
<!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>