【问题标题】:JQuery Script works with new document, but not with saved onesJQuery Script 适用于新文档,但不适用于已保存的文档
【发布时间】:2013-11-29 16:08:54
【问题描述】:

这是我所拥有的:

  • 包含 jQuery 和 jQueryUI 的 Lotus 数据库 (8.5.3)
  • form1 是只有一个字段的表单。 它设置为
    • “打开时 - 自动启用编辑模式”
    • “打开时 - 改为显示 XPage:xpage1”
    • “在 Web 访问上 - 显示 XPage:xpage1”
  • xpage1 是一个 xpage。它包含 :
    • 一个输入框链接到 form1 中的字段
    • 一个调用小脚本的按钮,只是 alert("some text")
    • 页面中包含一个 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>

【问题讨论】:

  • 只是一个疯狂的猜测,但是否与会话相关并且会话已过期?尝试使用 Ext Lib 中的“保持会话活动”控件,看看是否有帮助。从您展示的代码来看,我的想法似乎不太可能,但值得一试。我有一些事情不起作用,因为服务器端代码被“遗忘”,但 jQuery 是客户端。我从来没有见过浏览器忘记代码是随页面加载的。实际上,你有没有用firebug检查过jQuery第二次不起作用的时候?
  • 使用 Chrome 的开发者工具 (STRG+I) 并查看控制台。我敢打赌,有一些错误消息有助于追查问题。

标签: xpages


【解决方案1】:

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

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

【讨论】:

  • 非常感谢,就是这样!这是我的页面修改后的代码> 跨度>
猜你喜欢
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多