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

时间:2013-06-06 11:06:42

标签: javascript asp.net browser

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

我找到最简单的解决方案

<meta http-equiv="X-UA-Compatible" content="IE=9" /> 
<head></head>中的

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

5 个答案:

答案 0 :(得分:13)

不,在Javascript中无法做到这一点。至少,不是以实际可以实现任何目的的方式 - 在页面加载时渲染模式是固定的,所以你无法在页面内从JS中更改它。

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

您已经提到过您正在使用IIS。 This page should help you configure it for your site

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

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

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

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

答案 1 :(得分: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>
<{1>}部分中的

答案 2 :(得分:3)

JavaScript在页面加载后运行,这意味着您将无法在之后修改从服务器到客户端的元响应。如果没有公共标题

,可能更容易解决IE 10的问题

答案 3 :(得分:2)

var m = document.createElement("meta");
m.setAttribute("http-equiv", "X-UA-Compatible");
m.setAttribute("content", "IE=9");
document.getElementsByTagName("head")[0].appendChild(m);

但正如Teemu暗示的那样,它很可能不会产生任何影响。

答案 4 :(得分:1)

很难弄清楚(从问题)实际被破坏的是什么?你能说出哪些JavaScript代码被破坏了吗?

无论如何,一种解决方案可能正在改变文档模式,如上所述。另一个解决方案可能是更改浏览器的JavaScript版本(如果问题是由于兼容的JavaScript )。

您可以更改浏览器的JavaScript版本,将浏览器配置文件添加到asp.net应用程序中的 App_Browser 文件夹中。或者自动执行此操作,添加此nu-get包并进行修改。

install-package App_BrowsersUpdate

https://nuget.org/packages/App_BrowsersUpdate