我正在使用jsf在网站上工作并获得primefaces功能的好处,而我正在管理保存更改ononunload的想法我遇到了问题。 我正在使用javascript for onbeforeunload,为了保存更改,在为浏览器进行刷新,返回或关闭之前,知道我正在使用firefox浏览器, 这是我的javascript代码:
Window.onbeforeunload= handleOnClose();
Function handleOnClose(){
If(document.getElementById("MyForm:btnEdit").disabled== true {
If confirm("The page will close, Do you want to save changes?")
Save();
}
}
我使用以下命令从支持bean调用javascript中的save方法:
<p:remoteCommand name="Save" actionListener="#{bean.save()}" />
问题是javascript是自然触发的,但负责保存的方法仅在关闭浏览器时被调用,但在回复或刷新时没有被调用! 这个问题有什么想法或暗示吗?
答案 0 :(得分:0)
在onbeforeunload事件中创建同步的ajax请求。
Window.onbeforeunload= handleOnClose();
Function handleOnClose(){
If(document.getElementById("MyForm:btnEdit").disabled== true {
If confirm("The page will close, Do you want to save changes?")
Save();
$.ajax({
url: '/foo',
type: 'GET',
async: false,
timeout: 4000
});
}
}
这将阻止浏览器最多4秒钟。