【问题标题】:Xpages buttons doesn't work on IEXpages 按钮在 IE 上不起作用
【发布时间】:2015-10-08 13:21:30
【问题描述】:

我的 xpages 端有几个按钮(打开页面、保存文档、取消、响应)。全部适用于 Firefox 和 Chrome,但不适用于 Internet Explorer。但是有一个上传文件按钮,它可以工作。这是我在 IE 中的页面上唯一可以使用的按钮,但我不知道为什么。自定义控件中有链接,它们可以工作。

服务器:Lotus Domino 8.5.3 FixPack6、IE11。

你有什么想法吗?

有问题的代码sn-p:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:this.data>
        <xp:dominoDocument var="document1" formName="document_form"></xp:dominoDocument>
    </xp:this.data>
    <xp:button value="Save" id="button1">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="complete">
            <xp:this.action>
                <xp:saveDocument></xp:saveDocument>
            </xp:this.action>
        </xp:eventHandler>
    </xp:button>
    <xp:button value="Cancel" id="button2">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="complete">
            <xp:this.action>
                <xp:actionGroup>
                    <xp:setComponentMode cancel="true" mode="edit">
                    </xp:setComponentMode>
                    <xp:openPage name="$$PreviousPage">
                    </xp:openPage>
                </xp:actionGroup>
            </xp:this.action>
        </xp:eventHandler>
    </xp:button>
    <xp:br></xp:br>
    <xp:br></xp:br>
    <xp:table>
        <xp:tr>
            <xp:td>
                Subject:
            </xp:td>
            <xp:td>
                <xp:inputText id="inputText1" value="#{document1.Subject}"
                    style="width:684.0px">
                    <xp:this.defaultValue><![CDATA[#{javascript:if(document1.isResponse() == true){
    var response = "   -   Response to ";
    return response+session.getCurrentDatabase().getDocumentByUNID(document1.getParentId()).getItemValue("Subject").toString();
}}]]></xp:this.defaultValue>
                </xp:inputText>
            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td>
                Workpackage:
            </xp:td>
            <xp:td>
                <xp:comboBox id="comboBox1" value="#{document1.work_group}"
                    rendered="#{javascript:!document1.isResponse();}">
                    <xp:this.defaultValue><![CDATA[#{javascript:if(document1.isResponse() == true){
    var response = "   -   Response to ";
    return response+session.getCurrentDatabase().getDocumentByUNID(document1.getParentId()).getItemValue("Subject").toString();
}}]]></xp:this.defaultValue>
                    <xp:selectItem itemLabel="-" itemValue="-">
                    </xp:selectItem>
                    <xp:selectItems>
                        <xp:this.value><![CDATA[#{javascript:if(context.getUser().getRoles().contains('[wp1]')){
    var myOpt = new Array();
    myOpt[0] = "Workpackage1";
}else if(context.getUser().getRoles().contains('[wp2]')){
    var myOpt = new Array();
    myOpt[0] = "Workpackage2"
}else if(context.getUser().getRoles().contains('[wp_all]')){
    var myOpt = new Array();
    myOpt[0] = "Workpackage1"
    myOpt[1] = "Workpackage2"
    myOpt[2] = "Workpackage3"
    myOpt[3] = "Workpackage4"
    myOpt[4] = "Workpackage5"
    myOpt[5] = "Workpackage6"
    myOpt[6] = "Workpackage7"
    myOpt[7] = "Workpackage8"
}
return myOpt;}]]></xp:this.value>
                    </xp:selectItems>
                    <xp:eventHandler event="onchange" submit="true"
                        refreshMode="partial">
                        <xp:this.script>
                            <xp:executeClientScript>
                                <xp:this.script><![CDATA[XSP.partialRefreshGet("#{id:comboBox6}", {
        onComplete: function() {
            XSP.partialRefreshGet("#{id:comboBox5}")
        }
    });]]></xp:this.script>
                            </xp:executeClientScript>
                        </xp:this.script>
                    </xp:eventHandler>
                </xp:comboBox>
            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td>
                Task:
            </xp:td>
            <xp:td>
<xp:comboBox id="comboBox5" value="#{document1.task}"
                    rendered="#{javascript:!document1.isResponse();}">
                    <xp:selectItems>
                        <xp:this.value><![CDATA[#{javascript:if(getComponent("comboBox1").getValue() == "Workpackage1"){
    var myOpt = new Array();
    myOpt[0] = "-";
}else if(getComponent("comboBox1").getValue() == "Workpackage2"){
    var myOpt = new Array();
    myOpt[0] = "-"
}else{
    var myOpt = new Array();
    myOpt[0] = "-";
}
return myOpt;}]]></xp:this.value>
                    </xp:selectItems>
                    <xp:eventHandler event="onchange" submit="true"
                        refreshMode="partial" refreshId="comboBox6">
                    </xp:eventHandler>
                </xp:comboBox>

            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td>
                Deliverable:
            </xp:td>
            <xp:td>
                <xp:comboBox id="comboBox6" value="#{document1.deliverable}"
                    rendered="#{javascript:!document1.isResponse();}">
                    <xp:selectItems>
                        <xp:this.value><![CDATA[#{javascript:if(getComponent("comboBox1").getValue() == "Workpackage1"){
    var myOpt = new Array();
    myOpt[0] = "-";
    myOpt[1] = "D1.1x";
    myOpt[2] = "D1.2";
    myOpt[3] = "D1.3";
}else if(getComponent("comboBox1").getValue() == "Workpackage2"){
    var myOpt = new Array();
    myOpt[0] = "-"
    myOpt[1] = "D2.1"
    myOpt[2] = "D2.2"
    myOpt[3] = "D2.3"
    myOpt[4] = "D2.4.1"
    myOpt[5] = "D2.4.2"
}else{
    var myOpt = new Array();
    myOpt[0] = "-";
}
return myOpt;}]]></xp:this.value>
                    </xp:selectItems>
                    <xp:eventHandler event="onchange" submit="true"
                        refreshMode="complete">
                    </xp:eventHandler>
                </xp:comboBox>
            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td>
                Short description:
            </xp:td>
            <xp:td>
                <xp:inputRichText id="inputRichText1"
                    value="#{document1.short_description}">
                </xp:inputRichText>
            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td>
                File upload:
            </xp:td>
            <xp:td>
                <xp:div id="fileUploadContainer">
                    <div style="margin-top:1em">
                        <xp:br></xp:br>
                        <xp:table>
                            <xp:this.rendered><![CDATA[#{javascript:if((context.getUserAgent().isFirefox() == true) || (context.getUserAgent().isChrome() == true) || (context.getUserAgent().isIE() == true) || (context.getUserAgent().isOpera() == true) || (context.getUserAgent().isSafari() == true)){
    return false;
}else{
    return true;
}}]]></xp:this.rendered>
                            <xp:tr>
                                <xp:td style="width:520px">

                                    <xp:fileUpload id="fileUpload1" value="#{document1.files}">
                                    </xp:fileUpload>
                                </xp:td>
                                <xp:td style="width:10px">
                                    <xp:inputHidden id="saveOptions" required="true"
                                        disableClientSideValidation="true" value="#{document1}">
                                    </xp:inputHidden>
                                </xp:td>
                                <xp:td>
                                    <xp:button value="Upload" id="button12" style="height:21px">
                                        <xp:eventHandler event="onclick" submit="true"
                                            refreshMode="complete" id="eventHandler1">
                                            <xp:this.action>
                                                <xp:saveDocument></xp:saveDocument>
                                            </xp:this.action>
                                            <xp:this.script><![CDATA[var id = "#{id:saveOptions}";
dojo.byId(id).value="1";]]></xp:this.script>
                                        </xp:eventHandler>
                                    </xp:button>
                                </xp:td>
                            </xp:tr>
                        </xp:table>
                        <xp:br></xp:br>
                        <xp:fileDownload rows="30" id="fileDownload1"
                            displayLastModified="false" value="#{document1.files}" hideWhen="true"
                            allowDelete="true" style="width:100.0%">
                        </xp:fileDownload>
                        <xp:br></xp:br>
                    </div>
                </xp:div>
            </xp:td>
        </xp:tr>
    </xp:table>
    <xp:br></xp:br>
    <xp:span style="font-weight:bold">Modified</xp:span>
    <xp:span style="font-weight:bold">by:</xp:span>
    <xp:br></xp:br>
    <xp:inputText id="inputText3" disabled="true"
        value="#{document1.modified_by}" defaultValue="#{javascript:sessionScope.commonUserName}">
    </xp:inputText>
    <xp:br></xp:br>
    <xp:span style="font-weight:bold">Last modificati</xp:span>
    <xp:span style="font-weight:bold">on:</xp:span>
    <xp:br></xp:br>
    <xp:inputText id="inputText4" value="#{document1.last_modification}"
        disabled="true" defaultValue="${javascript:@Now()}">
        <xp:this.converter>
            <xp:convertDateTime type="date" dateStyle="short">
            </xp:convertDateTime>
        </xp:this.converter>
    </xp:inputText>
    <xp:br></xp:br>
    <xp:span style="font-weight:bold">Created:</xp:span>
    <xp:br style="font-weight:bold"></xp:br>
    <xp:inputText id="inputText5" value="#{document1.created}"
        disabled="true">
        <xp:this.defaultValue><![CDATA[#{javascript:if(document1.isNewNote()){
    @Now();
}else{
    document1.getItemValueDate("created");
}}]]></xp:this.defaultValue>
        <xp:this.converter>
            <xp:convertDateTime type="date" dateStyle="short">
            </xp:convertDateTime>
        </xp:this.converter>
    </xp:inputText>
</xp:view>

【问题讨论】:

  • 你查看过 IE 控制台吗?
  • 您应该详细说明确切的 IE 版本、服务器版本(包括任何修复包/热修复)、已安装的 Extlib 版本(如果有),还包括代码 sn-ps。对问题的描述如此有限是不可能的
  • 服务器:Lotus Domino 8.5.3 FixPack6、IE11。我现在在智能手机上,所以我现在无法提供代码。您需要哪些部分?附加信息:这些按钮也不适用于 Android Chrome。
  • 一个带有可以重现问题的按钮的示例 xpage。
  • 带有按钮的示例 xpage 可以正常工作。所以我想我需要生成一个带有一些功能的页面。 xpage 在兼容模式下工作,如果我从 Android Chrome 请求桌面网页,它也可以工作。

标签: internet-explorer button xpages explorer lotus


【解决方案1】:

这只是在黑暗中拍摄,但您是否尝试关闭兼容模式?

Pages does not render properly in IE 11 when using the bootsrapv3.0.0 theme

【讨论】:

  • 如果我将我的网站添加到兼容模式,按钮可以工作,但设计会分开。但也许这可能是一个解决方案。
  • 嗯,我想你已经明白了。是的,兼容模式不适用于某些东西。我有另一个答案,详细说明了如何让 IE 在引导程序中工作。
  • 看看你的代码,我会摆脱样式。我尽量不使用它们,更喜欢 styleClass 使用 CSS。
【解决方案2】:

检查正在使用的 Dojo 版本。 Internet Explorer 在放弃对旧版本 Dojo 的支持方面非常严厉。请记住,所有按钮操作(部分刷新等)都通过客户端 Dojo 扩展库,您可能会发现 Internet Explorer 11(最近的版本)不支持随 8.5.3 提供的 Dojo 版本(已经好几年了)。 Internet Explorer 支持 Domino 9.0.1 FP2(仅一年多)http://per.lausten.dk/blog/2014/08/xpages-and-domino-9-0-1-fp2-upgrades-to-ckeditor-and-dojo.html

【讨论】:

  • 这很可能是问题的根源。 8.5.3FP6 包含道场 v1.6.3。 dojo 中的 IE11 支持仅延伸到 v1.7
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多