XPages - Internet Explorer 9 脚本未响应错误消息

XPages - Internet Explorer 9 script not responding error message

我开发了一个 XPages 应用程序(在 XWorks 服务器上),它适用于 Firefox、Chrome 和 Internet Explorer 11。但是,对于 Internet Explorer 9,我经常收到错误消息 "application is not responding due to a long running script"在阅读模式和编辑模式之间切换时(以及单击执行 Dojo CSJS 和 SSJS 的按钮时)。我试过取消选择 "runtime optimized JS and CSS" 但问题仍然存在。我还能尝试什么来解决这个问题?

编辑按钮背后的代码是:

<xp:button id="button2">

                    <xp:this.value><![CDATA[${javascript:
applicationScope.get("actEditDocument")}]]></xp:this.value>
                    <xp:this.rendered><![CDATA[#{javascript:
var aLevel = getComponent("HasAuthorRights").getValue();

var hasStatusAccess = getComponent("HasStatusAccess2").getValue();
var cLevel = @If((!currentDocument.isEditable() && (hasStatusAccess == @True() 
|| @IsNewDoc() == 1)),"1","0");
@If(aLevel == "1" && cLevel == "1",true,false)}]]></xp:this.rendered>
                    <xp:eventHandler event="onclick" submit="true"
                        refreshMode="partial" id="eventHandler1"
                        refreshId="AllJobReferencePanel" disableValidators="true"
                        execMode="partial">
                        <xp:this.action>

                            <xp:actionGroup>

                                <xp:changeDocumentMode
                                    mode="edit">
                                </xp:changeDocumentMode>
                            </xp:actionGroup>
                        </xp:this.action>

                        <xp:this.script>
                            <xe:dojoFadeOut
                                node="AllJobReferencePanel" duration="10000">
                            </xe:dojoFadeOut>
                        </xp:this.script></xp:eventHandler>
                </xp:button>

编辑:我还添加了

var exCon = facesContext.getExternalContext();
var response = exCon.getResponse();
response.setHeader("X-UA-Compatible", "IE=EmulateIE7");

到每个 XPage 的 beforeRenderResponse 事件

您可以尝试增加超时时间,看看是否有帮助。把它放在导致问题的页面顶部。这从默认的 6 秒更改为 10 秒。您可以通过更改数字来调整时间。更改 "run optimized JS and CSS" 不会有什么不同,只会减慢速度。

<xp:scriptBlock id="setLatencyBlock">
        <xp:this.value><![CDATA[XSP.addOnLoad(function() { 
//increase Ajax request timeout to 10 seconds 
XSP.submitLatency = 10 * 1000; 
});]]></xp:this.value>
    </xp:scriptBlock>

代码来源:http://www.mindoo.de/web/x2ewiki.nsf/dx/XSPSubmitLatency

您只能使用 isIE() 方法为旧版 Internet Explorer 加载它,因为现代用户代理似乎不需要它。 (IE 11 不适用于对您有利的 isIE())


更新: Tony,我同意 Frantisek 在上面的评论中的观点。如果您在那里尝试不同的方法,您可能不需要延长超时时间。我使用上面的代码来等待我无法控制的很长的 java 过程。增加超时是一种创可贴,除非必要,否则应避免