0

当使用 Wicket 按钮提交表单后响应包含 iframe 时,页面无法完全重新加载。问题是 wicket 尝试在 window.domready 上绑定一些事件侦听器,但它失败并说“无法为元素“topRightItemTypeChoice7”上的事件“更改”绑定侦听器,因为该元素不在 DOM 中”

我已经使用 httpfox 插件分析了响应文本,并且响应中存在具有此 id 的组件。

下面是 Wicket 的 JS 片段,它试图绑定事件

Wicket.Event.add(window, "domready", function(event) { 
$('#topRightItemTypeChoice7').uniform();;
Wicket.Ajax.ajax({"c":"topRightItemTypeChoice7","ad":true,"u":"./PrDashBoardConfigurationPage?5-2.IBehaviorListener.0-container-configuratorForm-topRightDiv-topRightItemTypeChoice","e":"change","m":"POST"});;

响应中的 html 组件

<select name="topRightDiv:topRightItemTypeChoice" id="topRightItemTypeChoice7">

当我从页面中删除 iframe 时,一切正常。知道 iframe 对 window.domready 有什么不同吗?

4

1 回答 1

1

我将尝试澄清我自己的问题,因为我发现问题出在哪里。也许有人想知道这一点。问题是replaceComponentTagBodyWicket 提供的方法。我在问题中没有提到这种方法的使用,这可以让试图回答的人更容易。我就是这样用这个方法的

replaceComponentTagBody(markupStream, openTag, "<iframe id=''/>");

代替

replaceComponentTagBody(markupStream, openTag, "<iframe id=''></iframe>");

不同之处在于 iframe 的结束标记,它replaceComponentTagBody对这一点很敏感,并且不允许 Wicket 呈现剩余的 HTML 代码。

于 2015-12-08T16:08:23.657 回答