我有一个.net表单,其中包含一个自动回发的下拉列表。大多数时候一切都很好,我明白了:
<td class="frmLabel">Province:</td><td><select name="ctl00$ProvinceDropDown" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ProvinceDropDown\',\'\')', 0)" id="ctl00_ProvinceDropDown">
但有时候(我会在一秒钟之内了解情况)我明白了:
<td class="frmLabel">Province:</td><td><select name="ctl00$ProvinceDropDown" id="ctl00_ProvinceDropDown">
请注意,缺少自动回发的javascript。
问题发生的唯一时间是在IE10上。其他浏览器都没问题。甚至在IE9或IE10兼容模式的浏览器模式下IE10都可以。
显然,感觉.Net无法正确识别IE10。我知道这个修补程序:
http://support.microsoft.com/kb/2600100
可是:
a)我没有得到那些确切的症状,我没有得到'_doPostBack未定义'。 .net代码根本就没有生成javascript调用。
b)我有另一个沙箱主机,当我在那里移动代码时,一切都很好,甚至是IE10。此主机没有此修补程序,并且具有相同版本的.net(2.0 SP2,3.0 SP2,3.5 SP1)。
同样,ie.browser文件在两台主机上都有相同的内容,正则表达式行仍然是旧版本,据说不能正确检测IE10。
<capability name="majorversion" match="^[5-9]" />
有什么想法吗?
答案 0 :(得分:0)
尝试将<meta http-equiv="X-UA-Compatible" content="IE=edge" />
添加到<head>
。也许甚至IE = EmulateIE8只是为了看看它是否有任何影响......
答案 1 :(得分:0)
最后,http://support.microsoft.com/kb/2600100的修补程序确实解决了这个问题。奇怪的。我无法解释为什么我的非固定主机没有遇到这个问题,但我要说的最后一件事就是没有问题。
答案 2 :(得分:0)
编辑web.config文件并在<system.web>
部分添加
<browserCaps>
<case match="IE[ /](?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))">
browser=IE
version=${version}
majorversion=${major}
minorversion=${minor}
frames=true
tables=true
cookies=true
javascript=true
javaapplets=true
activexcontrols=true
ecmascriptversion=1.5
vbscript=true
backgroundsounds=true
isMobileDevice="true"
<filter match="[4-9]" with="${major}">
ecmascriptversion=1.3
css1=true
css2=true
xml=true
<filter match="[5-9]" with="${major}">
w3cdomversion=1.0
</filter>
</filter>
<filter match="^b" with="${letters}">
beta=true
</filter>
</case></browserCaps>