我发现最简单的解决方案是添加:
<meta http-equiv="X-UA-Compatible" content="IE=9" />
在 <head></head>
中。
问题是网站有很多页面,大多数页面没有继承的母版页。 那么是否有办法通过javascript添加呢?因为我们在所有网页中都有一个常见的引用js。
<meta http-equiv="X-UA-Compatible" content="IE=9" />
在 <head></head>
中。
问题是网站有很多页面,大多数页面没有继承的母版页。 那么是否有办法通过javascript添加呢?因为我们在所有网页中都有一个常见的引用js。
不,JavaScript没有办法改变浏览器的渲染模式。至少从页面加载时开始,渲染模式就已经被固定了,因此无法通过JS在页面内部更改它。
一个替代方案是将X-UA-Compatible
标记作为HTTP头添加。这样可以在整个站点上设置它,而不需要进行任何HTML更改。
您提到正在使用IIS。 此页面应该能帮助您为您的站点配置。
然而,真正的解决方案总是修复网站以使其在IE10中正常工作。这很可能是最好的解决方案,因为IE10实际上非常擅长遵循标准;如果您有一些在IE8和IE9中工作但在IE10中不工作的东西,那么几乎可以确定这实际上是您页面中的错误,而不是IE10中的问题。
反过来,这意味着即使它在其他浏览器中今天能够工作,也很可能存在您代码中的错误,会在未来版本的其他浏览器中出现问题。
使用IE的兼容性模式的另一个问题是它并不是与旧IE版本完全一样的精确副本。这尤其适用于IE10的兼容性模式,因为有些旧功能已经完全从IE10中删除,因此在兼容性模式下也不可用。这意味着IE8和IE9可能会正常工作,但IE9兼容模式下的IE10可能不起作用。具体问题取决于实际情况,但您需要像在真正的IE10模式下一样彻底测试它。
然后就有一个问题,你要如何处理网站未来的发展。那IE11及以后的版本呢?兼容模式会移除IE可能具有的新特性,因此如果坚持使用IE9模式,就会阻止您使用文本阴影或CSS过渡等功能。最终您还是需要使用这些特性,所以某个时候需要修复该网站;为什么不现在呢?
<httpProtocol>
<customHeaders>
<clear/>
<!--This setting will make document mode to highest mode available we need have mode 8 and above-->
<add name="X-UA-Compatible" value="IE=IE9"/>
</customHeaders>
</httpProtocol>
<system.webServer>
部分。JavaScript在页面加载后运行,这意味着您将无法在服务器将元响应发送到客户端后修改它。如果没有常见的标头,更容易解决IE 10的问题。
var m = document.createElement("meta");
m.setAttribute("http-equiv", "X-UA-Compatible");
m.setAttribute("content", "IE=9");
document.getElementsByTagName("head")[0].appendChild(m);
但正如 Teemu 暗示的那样,它很可能不会产生任何效果。
<meta http-equiv="X-UA-Compatible" content="IE=9" />
放置在head
的错误位置,则即使在页面加载期间也没有影响。 该 meta
应该在执行/解析任何可能影响呈现或JavaScript的内容之前,这意味着它必须放在所有 link
,style
或 script
元素之前,否则它就是完全无用的。如果您尝试使用脚本设置它,显然会出现 "forbidden" 元素在 meta
之前。 - TeemuinsertBefore()
方法。但我仍然怀疑它是否对你有用。 - Cobra_Fast很难从问题中弄清楚到底是哪里出了问题?你能告诉我哪段JavaScript代码出了问题吗?
无论如何,一种解决方案可能是更改文档模式,就像你上面所述的那样。另一种解决方案可能是更改浏览器的JavaScript版本(如果问题是由于不兼容的JavaScript引起的)。
您可以通过向asp.net应用程序中的App_Browser文件夹添加浏览器配置文件来更改浏览器的JavaScript版本。或者,可以添加此nu-get包并进行修改以自动完成。
install-package App_BrowsersUpdate
try
catch
。 - Bloafer
meta
添加到head
中,但这是没有用的,只有在加载页面时才有影响。 - Teemu