.net表单有时输出javascript,但有时不输出

时间:2013-04-16 19:59:52

标签: .net internet-explorer-10

我有一个.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]" />

有什么想法吗?

3 个答案:

答案 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>