JQuery Script适用于新文档,但不适用于已保存的文档

时间:2013-11-29 16:08:55

标签: xpages

这就是我所拥有的:

  • 包含jQuery和jQueryUI的Lotus数据库(8.5.3)
  • form1是一个只有一个字段的表单。 它被设置为
    • “开启时 - 自动启用编辑模式”
    • “在打开时 - 显示XPage:xpage1”
    • “在Web Access上 - 显示XPage:xpage1”
  • xpage1是一个xpage。它包含 :
    • 链接到form1
    • 中字段的inputBox
    • 一个调用小脚本的按钮,只是提醒(“一些文字”)
    • 页面上包含一个jQuery脚本。这是一个可拖动的面板。这就是它的全部。只是一个可以在页面上拖动的面板。
  • view1是一个显示基于form1
  • 的文档的视图

现在我的问题:

  • 如果在我的浏览器(Chrome或IE)中启动Xpage,它的行为正常:当我点击按钮时,我可以看到我的警报,我可以在页面上拖动我的面板,我可以填充我的字段,我可以保存文件。
  • 然后,当我稍后打开它时,Xpage会打开并显示字段数据,但我的脚本不起作用:无法保存文档,移动面板,显示警报。
  • 如果我在Lotus客户端中启动Xpage,它就可以了!
  • 如果我删除了我的jQuery引用和我的可移动面板,则其他脚本可以正常工作。

我忘了什么吗?这是某种已知的问题吗?

这是我的Xpage源代码,供参考:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

<!-- THIS WHERE I MAKE JQUERY AVAILABLE -->
<script src="js/jquery-1.9.1.js"></script>
<script src="js/jquery-ui-1.10.3.custom.js"></script>

<!-- THIS IS MY DATA BINDING -->
<xp:this.data>      
    <xp:dominoDocument var="ds1" formName="form1"></xp:dominoDocument>
    </xp:this.data>

<!-- THIS IS MY FIELD -->
<xp:br></xp:br>
Field1 : <xp:inputText id="field1" value="#{ds1.field1}"></xp:inputText>
<xp:br></xp:br><xp:br></xp:br>

<!-- THIS IS MY PROMPT BUTTON -->
<xp:button value="Alert" id="button2">
    <xp:eventHandler event="onclick" submit="false">
        <xp:this.script><![CDATA[alert("Waring!")]]></xp:this.script>
    </xp:eventHandler>
</xp:button>
<xp:br></xp:br><xp:br></xp:br>

<!-- THIS IS MY MOVABLE PANEL -->
<xp:panel id="myPan01"
    style="height:120px;width:120px;background-color:rgb(0,64,128)">
    <xp:this.attrs>
        <xp:attr name="class" value="dragItem"></xp:attr>
    </xp:this.attrs>
    <xp:div style="text-align:center">
        <xp:span style="font-weight:bold;color:rgb(255,255,255)">
        </xp:span>
    </xp:div>
    <xp:div style="text-align:center">
        <xp:span style="font-weight:bold;color:rgb(255,255,255)">
            Move Me!
        </xp:span>
    </xp:div>
</xp:panel>
<script>
    XSP.addOnLoad(function(){ $(".dragItem").draggable({ grid: [
    40,40 ]}); })
</script>
<xp:br></xp:br> 

<!-- THIS IS MY SAVE BUTTON -->
<xp:button value="Save" id="button1">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="complete" immediate="false" save="true">
    </xp:eventHandler>

<!-- THIS IS THE END... -->
</xp:button>
</xp:view>

1 个答案:

答案 0 :(得分:3)

您通过标准HTML <script>标记包含jquery,这可能会导致问题,因为这将放在HTML正文而不是标题中。 使用XPage的资源属性。在XPage ressources属性中添加一些客户端JavaScript库,然后转到XPage的源代码,找到包含JavaScript库的xp标记并更改它的URL,以便包含您的jquery资源。

我并非100%确定这可以解决您的问题,但由于您的代码看起来不错,否则值得一试。