使用元标记“X-UA-Compatible”

时间:2013-09-10 16:06:20

标签: javascript .net internet-explorer c#-4.0

我遇到过多个关于使用元标记更改互联网探索的渲染模式/版本的博客,因为IE9或10是多个浏览器的组合。

<meta http-equiv="X-UA-Compatible" content="IE=Edge"&GT;

但对我来说,这个标签似乎只能在完整的Internet Explorer浏览器中运行,但不能在.net浏览器控件中运行。我在观察中是否正确?

我必须覆盖浏览器控件选择的默认浏览器版本(从7到8)。更改/添加注册表参数不是一个选项。

2 个答案:

答案 0 :(得分:2)

只有当这是<head>部分中的第一个元素时,此元标记才能正常工作。

答案 1 :(得分:1)

如果您通过META标记或HTTP响应标头指定X-UA-Compatible值,文档模式将更改为指定的值,就像在桌面IE中一样。

与使用F12开发人员工具更改浏览器模式不同,文档模式不会影响发送到服务器的User-Agent字符串。在完全修补的IE版本中,X-UA-Compatible设置确实会影响User-Agent属性中显示给JavaScript的navigator.userAgent,但如果更改document mode设置,则该值不会更改使用F12开发人员工具。

您可以通过查看

来探索发送X-UA-Compatible的结果

http://webdbg.com/ua.aspx

http://webdbg.com/ua9.aspx

第一页未指定文档模式(因此获取默认值),而后者指定文档模式为IE9。如果单击文档模式链接,即使请求标头中的用户代理未更改,您也可以看到文档的模式对X-UA-Compatible指令敏感。

相反,要更改应用程序中Web浏览器控件的浏览器模式,必须设置FEATURE_BROWSER_EMULATION注册表项,指定可执行文件的名称和所需的模式。

客户要求&#34;不能进行注册表更改&#34;傻傻的。可以合理地说:&#34;我们不希望任何影响IE或其他程序的注册表操作。&#34;说:&#34;我们根​​本不想要任何注册表操作&#34;这是不合理的。考虑到仅仅运行可执行文件的行为会导致对注册表的更改。