onbeforeunload javascript调用支持bean方法

时间:2013-07-23 09:34:41

标签: javascript jsf-2 primefaces

我正在使用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是自然触发的,但负责保存的方法仅在关闭浏览器时被调用,但在回复或刷新时没有被调用! 这个问题有什么想法或暗示吗?

1 个答案:

答案 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秒钟。