IE11预览中未定义“WebForm_DoPostBackWithOptions”
IE11即将到来。 我刚刚安装了开发者预览版。 但是,如果我运行一些我的Web应用程序,并且出现错误, WebForm_DoPostBackWithOptions
是未定义的 。
当我玩Autopostback DropDownList
时popup错误。
而且,IE10之前也有类似的问题:
http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx
我有一个与.NET 4.0框架无法正确检测到Internet Explorer 11类似的问题。 以下是我如何解决问题的方法:
安装build议的修补程序没有办法。 在深入研究这个问题之后,我发现尽pipe服务器上安装了http://support.microsoft.com/kb/2836939补丁,但浏览器仍被认为是服务器上版本为0.0的Mozilla。; 经过额外的研究,我发现如果你的网站的app_browsers
文件夹中有任何.browser
文件,服务器上检测到的版本是错误的,也就是Mozilla 0.0。
要解决此问题,我使用以下内容在app_browsers
目录中创build了自定义.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>
下面的文章中提出了一种类似的方法: IE 11 + Windows 8.1中的doPostback失败
我想澄清这个问题只发生在.NET 4.0上。 在.NET 4.5中,浏览器及其版本被正确检测到。
最后,我find了解决办法,感谢Scott Hunter的build议。
如果您想解决IE11问题,请安装下面的修补程序。
-
http://support.microsoft.com/kb/2836939 – NDP 4 – Win7SP1 / Win2K3SP2 / Win2K8R2SP1 / Win2K8SP2 / VistaSP2 / WinXPSP3
-
http://support.microsoft.com/kb/2836940 – NDP 3.5 SP1 – Win2K3SP2 / Win2K8SP2 / VistaSP2 / WinXPSP3
-
http://support.microsoft.com/kb/2836941 – NDP 2.0 SP2 – Win2K3SP2 / WinXPSP3
-
http://support.microsoft.com/kb/2836942 – NDP 3.5 SP1 – Win7SP1 / Win2K8R2SP1
-
http://support.microsoft.com/kb/2836943 – NDP 2.0 SP2 – Win7SP1 / Win2K8R2SP1
-
http://support.microsoft.com/kb/2836945 – NDP 2.0 SP2 – Win2K8SP2 / VistaSP2
-
http://support.microsoft.com/kb/2836946 – NDP 2.0 SP2 – Win8RTM / WinRTRTM / Win2K12RTM
我尝试了所有在互联网上列出的补丁,包括这里列出的补丁。 实际上似乎工作的唯一的东西是在服务器上安装.NET 4.5框架。
在这里获取: http : //www.microsoft.com/en-us/download/details.aspx?id=30653
希望这节省了我在这一个失去了几个小时的人。
对于任何人都难以理解为什么user2919107的答案上面(把IE11的自定义.browser文件放在你的App_Browsers文件夹中)不起作用,请尝试触摸App_Browsers文件夹中现有的.browser文件。
简单地创build/复制IE11 .browser文件不起作用。 您需要触摸现有的.browser文件,以便重新编译App_Browsers内容并将其考虑在内。
是的,这是相同的核心问题,并且在2013年6月的ASP.NET修补程序中得到修复。 请参阅http://blogs.msdn.com/b/ieinternals/archive/2013/09/21/internet-explorer-11-user-agent-string-ua-string-sniffing-compatibility-with-gecko-webkit.aspx
如果您正在运行Windows 2003并且无法应用任何修补程序; 尝试将ASP.NET页面的Page_Init中Page对象的ClientTarget属性设置为“uplevel”。
protected void Page_Init(object sender, EventArgs e) { Page.ClientTarget = "uplevel"; }
我也有这个问题。 我尽量不要安装.NET 4.5。 我只是在升级到.NET 4.5之前寻找短期解决scheme。 Panagiotis Poulos对于新的.browser文件是正确的。 我触摸了一个现有的.browser文件,我现在正在识别新的IE .browser文件。 据我所知,一切都可以正常工作。
简而言之,按照这些家伙的说明,但如果你尝试.browser的方法,记得上传自己的.browser文件后,触摸现有的.browser文件。
find了一个临时的解决办法。
我尝试应用此修补程序,但我无法获取要安装的修补程序。 错误是:kb2600088不适用,或被您的计算机上的另一个条件阻止。 可能由于.NET 4.5,我google了,但我不想卸载.NET 4.5,所以我没有按照。
因此,要解决原来的问题,请启动IE11并按F12键进入开发者控制台。 在“仿真”选项卡下,将文档模式设置为“10”,并在用户代理string下设置为“10”。 我相信它模仿IE 10,它完美的工作,而不必碰到这个错误。
这只是一个工作。 不是一个修复。 希望它能帮助那些试图完成工作的人。
如果您下载了IE 11,但使用了Windows附带的原始IE浏览器,则浏览器的用户代理有点不同, 最高的答案将不起作用。
你只需要改变这一行:
<userAgent match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />
对此:
<userAgent match="Trident\/7.0;(?'someGarbage'[^'rv:']*) rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)" />