使用javascript添加<meta http-equiv ="X-UA-Compatible"content ="IE = 9"/>

Pra*_*ngh 3 javascript browser asp.net

我在IE 10中遇到了一个奇怪的问题.许多jQuery脚本在IE 8,9,Chrome,firefox和safari上工作正常但在IE 10上坏了.只有当一些用户切换到IE 10时才会出现问题.

我发现添加的最简单的解决方案

<meta http-equiv="X-UA-Compatible" content="IE=9" /> 
Run Code Online (Sandbox Code Playgroud)

在<head></head>.

问题是网站有很多页面,大多数页面没有继承的母版页.那么有没有办法通过javascript添加这个,因为我们在所有网页中都有一个共同的引用js.

Spu*_*ley 13

不,没有办法在Javascript中这样做.至少,不是以实际可以实现的方式 - 在加载页面时渲染模式是固定的,所以你无法在页面内从JS中更改它.

另一种解决方案是将X-UA-Compatible标志添加为HTTP标头.这将在您网站的所有网页上设置它,而无需任何HTML更改.

您已经提到过您正在使用IIS.此页面应该可以帮助您为您的站点配置它.

但是,真正的解决方案始终是修复网站,使其在IE10中运行.这可能是最适合您的解决方案,因为IE10实际上非常擅长符合标准; 如果你有一些可以在IE8和IE9中运行的东西而不是IE10,那么它几乎可以肯定你的页面实际上有问题而不是IE10中的任何错误.

这反过来意味着即使它今天在其他浏览器中有效,您的代码中也可能存在一个错误,可能会在其他浏览器的未来版本中出现问题.

使用IE的兼容模式的另一个问题是,它确实不是它应该兼容的旧IE版本的准确副本.IE10的兼容模式尤其如此,因为有些旧功能已完全从IE10中删除,因此在兼容模式下也无法使用.这意味着IE8和IE9可能会工作,但IE9-compat模式下的IE10可能无法正常工作.这取决于实际问题,但你需要在compat模式下像在真实的IE10模式下一样彻底地测试它.

然后就是如何处理未来的网站问题.IE11及更高版本怎么样?Compat模式删除IE可能具有的新功能,因此通过坚持使用IE9模式,您将无法使用文本阴影或CSS过渡等功能.您最终会想要使用这些功能,因此您需要在某个时候修复该网站; 为什么不是现在?


Pra*_*ngh 6

感谢大家的回复和帮助.我在寻找的是在web.config中添加以下代码:

        <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>
Run Code Online (Sandbox Code Playgroud)

在 <system.webServer>部分.