我们遇到了类似的问题,即 DropDownList 的自动回发在较新版本的 IE 中停止工作。我们首先在 IE10 中发现了它,并将其跟踪到许多人都知道的浏览器定义错误,其中详细说明了 here 等。
对于这个特定的应用程序,以及运行/运行不同环境的一组盒子,升级到 4.5 不是近期的选择。更重要的是,当我们尝试安装它时,上面帖子中详述的机器范围的修复出错了。然而,站点范围的修复确实起到了作用。
一两周后,有人碰巧用 IE11 Preview 访问了该网站,问题又出现了。我们进行了更多研究,发现站点范围修复中的浏览器定义“IE10Plus”(实际上确实修复了 IE10 问题)不适用于 IE11。为了识别 IE10,添加了一个主要版本正则表达式匹配 - “\d{2,}” - 匹配两位数字(与之前的匹配“^9$”相反 - 完全匹配“9”)和IE10 现在工作了。问题是 IE10Plus 定义(以及它之前的每个 IE 定义)最终源自“IE”定义,并且该定义还要求 UA 字符串中包含“MSIE”(除其他外),并且从 IE11 开始,“ MSIE" 不再是 UA 字符串的一部分。
“IE10Plus”真的应该叫“IE10”。
鉴于我们无法在短期内升级到 4.5,我们不得不寻找另一个解决方案。我们遇到的一个问题是创建我们自己的 IE11 浏览器定义。除了我们在 IE10 中看到的功能之外,我们无法定义任何功能,但这非常接近,至少它可以识别浏览器(并且不会像发生的那样降低功能)。
人们会告诉你不要这样做,但对于某些人(比如我们)来说,它确实提供了一个临时修复,直到最终解决方案出现。
我不知道 4.5 应该以什么方式解决这个问题。我查看了浏览器定义文件,但没有看到它们识别 IE11 的方法(其 UA 字符串中没有“MSIE”),但也许在某个 DLL 中隐藏了一些额外的修复。
无论如何,这是我们创建的定义,对我们来说,它立即解决了问题。
在您的项目中,添加(或创建为)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,它可以解决您的问题 - 太好了。如果你不能,或者它不能,这可能会阻止你直到你可以(或直到出现其他修复)。