迈克尔,我看你有一个错误的介词onbeforeunload如何工作,你在哪里AjaxEventBehavior。
AjaxEventBehavior将监听器添加到javascript事件中。您可以使用众所周知的元素'onclick','onchange'等事件。第二种方法是使用您自己的事件,例如, 'myevent'并从javascript中触发它。这两种情况意味着您将AjaxEventBehavior添加到HTML元素(如“DIV”,“A”等)。
但是,事件'onbeforeunload'实际上是另一种情况,因为它是由窗口定义的事件,所以它是'window.onbeforeunload'。
最简单的方法之一是创建一个HTML元素并添加一个自定义事件。然后在页面的head部分添加一个javascript,将刚刚定义的事件的触发器添加到onbeforeunload。
实施例:
检票1.6
标记
<div wicket:id="myElement">[just a placeholder tag]</div>
代码示例:
static String CUSTOM_EVENT_NAME = "myElementEvent";
add(new WebMarkupContainer("myElement")
{
private static final long serialVersionUID = 1L;
@Override
public void renderHead(IHeaderResponse response)
{
super.renderHead(response);
StringWriter sw = new StringWriter();
sw.append("$(window).bind('onbeforeunload', function() { $('#");
sw.append(getMakupId());
sw.append("').trigger('");
sw.append(CUSTOM_EVENT_NAME);
sw.append("'); });");
response.render(OnDomReadyHeaderItem.forScript(sw.toString()));
}
}
.setOutputMarkupId(true)
.add(
new AjaxEventBehavior(CUSTOM_EVENT_NAME)
{
private static final long serialVersionUID = 1L;
protected void onEvent(final AjaxRequestTarget target)
{
// your code
}
})
);
你怎么会在检票1.5做到这一点的BasePage 0.1? – user2340939