Ric*_*lee 6 java browser wicket modal-dialog
如何尝试从wicket modalWindow下面的setResponsePage()中击败IE和Firefox对话框弹出窗口.对话框弹出窗口要求回答:"此页面要求您确认要离开 - 您输入的数据可能无法保存."
AjaxLink signInContainer = new AjaxLink("signInContainer") {
@Override
public void onClick(AjaxRequestTarget target) {
target.appendJavascript("Wicket.Window.unloadConfirmation = false;");
modalWindow.close(target);
setResponsePage(SignInPage.class);
modalWindow.close(target);
}
};
Run Code Online (Sandbox Code Playgroud)
-丰富
and*_*rei 10
在wicket 6.x及更高版本中,您只需设置showUnloadConfirmation为false:
final ModalWindow modalWindow = new ModalWindow("modalWindow");
modalWindow.showUnloadConfirmation(false);
Run Code Online (Sandbox Code Playgroud)
target.appendJavascript("Wicket.Window.unloadConfirmation = false;");不起作用,因为它必须在之前运行modal.show(target);.
打开窗口时,您可以预先添加脚本,而不是附加脚本:
add(new AjaxLink<Void>("show") {
@Override
public void onClick(AjaxRequestTarget target) {
target.prependJavascript("Wicket.Window.unloadConfirmation = false;");
modal.show(target);
}
});
Run Code Online (Sandbox Code Playgroud)
或添加行为,以执行它onload:
modal.add(new AbstractBehavior() {
@Override
public void renderHead(IHeaderResponse response) {
response.renderOnLoadJavascript("Wicket.Window.unloadConfirmation = false;");
}
});
Run Code Online (Sandbox Code Playgroud)
但是,必须在打开模态窗口之前调用它,而不是在远离页面导航时调用(setResponsePage()).
编辑:这是一个黑客,使用我的 其他答案中描述的替代方案。
尝试这个:
public void onClick(AjaxRequestTarget target) {
modal.close(target);
CharSequence url = urlFor(HomePage.class, new PageParameters("gone=true"));
target.appendJavascript("window.location='" + url + "';");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6841 次 |
| 最近记录: |