使用标记强制IE 11“用户代理字符串”

时间:2013-11-21 12:24:03

标签: javascript internet-explorer cross-browser compatibility internet-explorer-11

我的网站在IE11中被破坏了。

我们都知道HTML标签允许开发人员强制IE兼容模式;在例子中

<meta http-equiv="X-UA-Compatible" content="IE=8, IE=9" />

工作得很好并解决了IE10的可视化问题。

但实际上在IE11上,即使Compatibility mode设置为IE9User agent string设置为default且javascript也无法正常工作。 手动更改User agent stringIE10解决了我的问题。

对于shure我要解决导致网站错误的真正问题,但实际上我需要一种快速,编程的方式来强制使用#34;用户代理字符串&#34;到IE10 ,因为我无法与每个用户联系。

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:16)

我在使用.net framework 4.0的2003 Windows服务器上也遇到了同样的问题,经过长时间的研究后我发现以下内容很有用......

我创建了App_Browsers文件夹并放了一个名为ie.browser的浏览器文件并粘贴了下面的浏览器定义文本并开始工作

<browsers>
<browser id="IE11" parentID="Mozilla">
<identification>
  <userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
  <userAgent nonMatch="IEMobile" />
</identification>
<capture>
  <userAgent match="Trident/(?'layoutVersion'\d+)" />
</capture>
<capabilities>
  <capability name="browser"              value="IE" />
  <capability name="layoutEngine"         value="Trident" />
  <capability name="layoutEngineVersion"  value="${layoutVersion}" />
  <capability name="extra"                value="${extra}" />
  <capability name="isColor"              value="true" />
  <capability name="letters"              value="${letters}" />
  <capability name="majorversion"         value="${major}" />
  <capability name="minorversion"         value="${minor}" />
  <capability name="screenBitDepth"       value="8" />
  <capability name="type"                 value="IE${major}" />
  <capability name="version"              value="${version}" />
</capabilities>
 </browser>

<!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko -->
<browser id="IE110" parentID="IE11">
<identification>
  <capability name="majorversion" match="11" />
</identification>

<capabilities>
  <capability name="ecmascriptversion"    value="3.0" />
  <capability name="jscriptversion"       value="5.6" />
  <capability name="javascript"           value="true" />
  <capability name="javascriptversion"    value="1.5" />
  <capability name="msdomversion"         value="${majorversion}.${minorversion}" />
  <capability name="w3cdomversion"        value="1.0" />
  <capability name="ExchangeOmaSupported" value="true" />
  <capability name="activexcontrols"      value="true" />
  <capability name="backgroundsounds"     value="true" />
  <capability name="cookies"              value="true" />
  <capability name="frames"               value="true" />
  <capability name="javaapplets"          value="true" />
  <capability name="supportsCallback"     value="true" />
  <capability name="supportsFileUpload"   value="true" />
  <capability name="supportsMultilineTextBoxDisplay" value="true" />
  <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
  <capability name="supportsVCard"        value="true" />
  <capability name="supportsXmlHttp"      value="true" />
  <capability name="tables"               value="true" />
  <capability name="supportsAccessKeyAttribute"    value="true" />
  <capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
  <capability name="vbscript"             value="true" />
</capabilities>
  </browser>
</browsers>

答案 1 :(得分:5)

<强>解决!网站只是在服务器上安装Dotnet framework 4.5


实际上我没有找到一种方法来强制编程浏览器用户代理字符串(这是原始问题)。但修复了0代码的网站..

刚做了很多测试,在一台服务器上我发现该网站正在运行,而在其他服务器上却没有。

好服务器”是Win2012,“坏服务器”是Win2008。在Win2012上,Aspnet 4.5正在运行,而在Win2008上则没有。

坏服务器上安装了dotnet framework 4.5 ,一切都开始工作了!

答案 2 :(得分:1)

如果您不想安装整个.NET Framework 4.5,只需使用Microsoft http://www.microsoft.com/en-us/download/confirmation.aspx?id=39257中的此修补程序更新.NET Framework 4.0即可 就我而言,这完美无缺。

答案 3 :(得分:0)

将代码放入WebConfig:2017-2018工作

  <system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-UA-Compatible" value="IE=Edge" />
    </customHeaders>
  </httpProtocol>
  </system.webServer>