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

时间:2015-04-07 12:34:18

标签: internet-explorer internet-explorer-9 xpages

我开发了一个XPages应用程序(在XWorks服务器上),可以很好地与Firefox,Chrome和Internet Explorer 11配合使用。但是,在Internet Explorer 9中,我经常收到错误消息"应用程序没有响应,因为长期运行的脚本"在读取模式和编辑模式之间切换时(以及单击执行Dojo CSJS和SSJS的按钮时)。我已经尝试取消选择"运行时优化的JS和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事件

1 个答案:

答案 0 :(得分:2)

你可以尝试增加时间,看看是否有帮助。将它放在导致问题的页面顶部。这从默认值6s变为10s。您可以通过更改号码来调整时间。改变“运行优化的JS和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进程。增加超时是乐队助手,除非必要,否则应该避免