iframe - 多个 iframe 的部分更新不起作用

标签 iframe xpages

在 XPage(名为“xBase”)上,我在容器 (div) 内有两个 IFrame:

<xp:div id="divIFrames">
    <iframe src="xTest.xsp?key=abc" id="iframe0" frameborder="0" width="100%" height="28px" scrolling="no"></iframe>
    <iframe src="xTest.xsp?key=def" id="iframe1" frameborder="0" width="100%" height="28px" scrolling="no"></iframe>
    <xp:label><xp:this.value><![CDATA[#{javascript:context.getUrl().toString();}]]></xp:this.value></xp:label>
</xp:div>

两个 IFrame 都指向我的数据库中的另一个 XPage“xTest”,具有不同的 URL 参数。为简单起见,“xTest”仅包含带有当前 URL 的标签:

<xp:label value="#{javascript:context.getUrl().toString()}"></xp:label>

但是,容器的部分更新不起作用,并且 URL 参数添加到“xBase”:$$ajaxid=view%3A_id1%3AdivIFrames

仅当存在超过 1 个带有 URL 参数的 iframe 时,才会出现此问题。例如,它适用于 src 中不带 URL 参数的多个 iframe 或带有 URL 参数的单个 iframe。为什么它不适用于 2 个或更多带有 URL 参数的 IFrame?有人知道我在这里做错了什么吗?

编辑:

事实证明,当 XPage 上有多个 IFrame 时,不是部分刷新而是在 sessionScope 中设置变量不起作用。由于这不适合当前的问题,我创建了一个 new one 。对于给您带来的不便,我们深表歉意!

最佳答案

xBase.xsp 中更改的标签表明部分刷新工作正常。 URL参数

?$$ajaxid=view%3A_id1%3AdivIFrames
添加

是因为这就是部分刷新的工作原理:它是对 XPage 本身的 Ajax 请求,参数是随该请求刷新的元素的 id。显示请求 URL 的标签位于刷新的 DOM 元素内,这就是您看到它的原因。

由于 context.getUrl() 方法的缓存,您有时会看到“原始”查询,有时会看到带有 Ajax 参数的 URL。如果将示例代码更改为...

facesContext.getExternalContext().getRequest().getQueryString();

...您将看到没有任何缓存的参数。

顺便说一句:我已经用 1000 个 IFrame 测试了示例代码,它对我来说没有任何问题。

请提供有关您的环境的更多信息(Domino 版本、浏览器等)

关于iframe - 多个 iframe 的部分更新不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16011768/

相关文章:

xpages - 需要通过 SSJS 在新数据库上设置 Launch 属性

xpages - 我是否必须在重复函数中使用回收 Notes 对象?

javascript - Bootstrap .form-control 和 RecurlyJS iframe

jquery - 使用 JQuery 访问由 chrome 扩展注入(inject)的 iframe

javascript - 注入(inject)了恶意的 JavaScript 代码 - 但没有做任何恶意的事情?

javascript - 我可以对 JavaScript 施加时间限制(例如使用 iframe)吗?

java - 使用 Java 在 XPage 中进行验证

javascript - 如何使 "xp"命名空间中的不同 id 可见

java - 在 XPages 中从 restService 获取 JSON 数据

javascript - 如何清除这些间隔?