我们有 ASP.NET 应用程序,目前我们正在 Windows 8.1/IE 11 上对此进行兼容性测试。发现一些与 UI 对齐、_dopostback 和 imagebutton 单击相关的问题。以前在 Windows 8/IE 10 上也遇到过同样的问题。这些问题通过在项目的 app_browser 文件夹中添加 IE 浏览器文件得到解决。但是我们还没有找到任何支持 IE 11 的 ie.browser 最新文件。从一些博客了解到有热修复来解决这个问题。尝试通过在托管机器上安装热修复,_dopostback 和 UI 对齐问题得到了解决。图像按钮单击仍然无效。
4 回答
我们还不能在这里全面升级到 4.5。但我能够创建自己的 ie.browser 浏览器定义文件(适用于 4.0)。
在您的项目中,添加(或创建为)App_Browsers/ie.browser,以下内容:
<!-- Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko -->
<browser id="IE11Preview" parentID="Mozilla">
<identification>
<userAgent match="Trident/(?'layoutVersion'\d+).*rv:(?'revision'(?'major'\d+)(\.(?'minor'\d+)?))" />
<userAgent nonMatch="MSIE" />
</identification>
<capabilities>
<capability name="browser" value="IE" />
<capability name="layoutEngine" value="Trident" />
<capability name="layoutEngineVersion" value="${layoutVersion}" />
<capability name="isColor" value="true" />
<capability name="screenBitDepth" value="8" />
<capability name="ecmascriptversion" value="3.0" />
<capability name="jscriptversion" value="6.0" />
<capability name="javascript" value="true" />
<capability name="javascriptversion" value="1.5" />
<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" />
<capability name="revmajor" value="${major}" />
<capability name="revminor" value="${minor}" />
</capabilities>
</browser>
如果要添加到现有文件,请查找 id="IE10Plus" - 您可能需要将其更改为 id="IE10",因为“Plus”部分不再准确。
如果你可以去 4.5 做,但如果你不能,这可能会阻止你直到你可以。任何补丁(或升级——比如 4.5)都会覆盖这个——仅供参考......
这是 ASP.NET 4.0 的修补程序:
http://support.microsoft.com/kb/2836939/en-us
当然,我们都对此感到震惊……令人惊讶的是,MSft 在发布之前甚至没有考虑针对 Asp.Net 4.0 测试 IE11,这可能与大麻最近在华盛顿州合法化的事实有关。
将浏览器设置为 IE10 也可以(假设还安装了 .NET 4.0 的 IE10 修补程序)。
相关更改:这里是有关 ie11 中用户代理更改的信息。希望您不依赖于从用户代理字符串中删除内容,但我相信 ASP.NET 上级/下级逻辑仍然在 4.0 和更早版本中使用它(通过针对具有 .net4.0/ie11 的服务器将 UA 设置为 IE10 来确认)问题),但据说 4.5 会有所不同(请参阅http://www.hanselman.com/blog/IE10AndIE11AndWindows81AndDoPostBack.aspx)。
http://msdn.microsoft.com/en-us/library/ie/bg182625(v=vs.85).aspx
在服务器上安装 .NET 4.5。它使用已解决已知图像按钮单击问题的较新版本覆盖 ASP.NET 程序集。
我们也通过修补程序解决了这个问题,但是安装 .NET 4.5 最终被接受为我们的解决方案。
就我而言,解决方案更简单:
- 在 Windows 8 上打开 IE11
- 单击 Internet 选项
- 点击安全
- 转到脚本目录(在列表的末尾)
- 单击脚本>活动脚本上的启用单选按钮