在Intranet中强制“ Internet Explorer 8”浏览器模式
题
在IE8中有“ Internet Explorer 8”,“ Internet Explorer 8兼容模式”和IE7模式。
但是,IE中的默认设置使所有Intranet网站都使用“ IE8兼容模式”,即使我已经设置了Doctype,Meta标签,HTTP标头,建议将其强加于IE8模式。
我有
u003C!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/tr/html4/loose.dtd">
和
u003Cmeta http-equiv="X-UA-Compatible" content="IE=8" >
但是它仍然进入“ IE8兼容模式”,而没有任何更改IE设置。
如何将其强制为纯的“ IE8”模式,而无需更改任何浏览器的设置?
PS。我不是在这里谈论“文档模式”。
解决方案
似乎MSFT并未考虑我们内部有许多不同的Web应用程序的大型Intranet环境。
根据我在MSDN论坛上阅读的某个地方,无法绕过IE8设置。
因此,我将不得不乞求系统管理员,以更改“兼容性视图”设置和值并防止用户更改值,直到MSFT发现此错误并修复它为止。
从一个 MSDN博客文章 (强调他们的):”在IE请求Web内容之前选择浏览器模式. 。这意味着 网站无法选择浏览器模式."
其他提示
可以在Intranet中覆盖兼容模式。只需将以下代码添加到web.config。用IE9为我工作。
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
我在这里很难遵循答案,因此,这是简而言之的重要信息:
如果您的Intranet使用IE的默认设置,则IE7标准模式将为Intranet站点强制执行,无论其任何网站设置如何。
从 这:
兼容性视图和企业
当今有大量的企业网站网站是Internet Explorer 7。为了保持兼容性,Internet Explorer 8船具有基于区域评估的智能默认设备。在默认状态下,Internet Explorer 8标准模式(兼容性查看)和 所有Intranet网站在Internet Explorer 7标准模式中显示 (兼容视图)。
让我们看一些例子。如果您导航到本地网络上的网站 http:// myportal 和 http:// sharepoint/stites/mysite, Internet Explorer 8使用“ 7”的用户代理字符串,“ 7”的版本向量来识别自身, ,并显示在Internet Explorer 7标准模式下触发标准模式的网页。这种组合允许在Internet Explorer 7中正确工作的网页继续在IE8中继续这样做。
要覆盖Intranet或所有网站的兼容性视图设置,您需要使IE8效仿。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
设置自定义HTTP标头,而不是使用 <meta...
在里面 <head>
部分。这些应该等效,但我已经看到 X-UA-Compatible
服务器的HTTP标头将覆盖IE 8的“显示Intranet站点在兼容性视图中”,其中 <meta...
元素不会。
如果您使用.NET,我有答案:
html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" >
web.config:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=8" />
</customHeaders>
</httpProtocol>
在某个地方阅读Doctype声明必须是 非常第一行. 。没有任何形式的评论,也没有空排。
结合设置HTTP响应标头,这对我有用。 Browser Mode
从“ IE9兼容模式”到“ IE9模式”。
hkey_current_user Software Microsoft Internet Explorer browseremulation intranetCompatibilitymode 1-> 0
为了使Meta声明起作用,Doctype必须是简化的版本:
<!DOCTYPE html>
不是丹尼斯问题中的较长陈述。
这个组合为我带来了技巧:
<!DOCTYPE HTML>
<HEAD>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
</HEAD>
至少IE开发人员工具报告IE9 Compat视图,IE8标准
只是为了踢,我尝试了Emulateie7,这也起作用。简化扩展!Doctype是关键。
您需要从域名站点网站上删除端口号:1180/指数/
如果浏览器在URL中看到端口号 - 嗨,“思考”,那就是Intranet。
设置您的DNS服务器以供友好URL- site.com/index 而且好起来
标记为“正确”的答案在技术上是正确的,但表明大多数人都无法解决实际问题:兼容模式?”。
<!DOCTYPE HTML>
<HEAD>
<meta http-equiv="X-UA-Compatible" content="Edge" >
</HEAD>
这对我来说是在几个工作站上工作的。
如果以上代码是在应用程序端实现的,则IE8似乎的行为似乎不在兼容模式下,即使它仍然将浏览器模式显示为兼容模式。