当第二次运行功能时,检查记录ID是否不同? JavaScript的

时间:2017-12-15 16:40:46

标签: javascript jquery onbeforeunload

我在单页应用中实现了beforeunload功能。这看起来很酷,因为我们可以检查用户何时想要关闭他们的浏览器/窗口。这在我的应用中非常重要。应用程序具有锁定功能,可防止多个用户同时编辑同一记录。然而,这导致一些其他问题,如用户只是关闭他们的浏览器和记录将保持锁定在这种情况下。所以在我实施beforeunload后,每当用户点击X关闭他们的浏览器或窗口功能解锁时,记录就会运行。在我尝试使用我的应用程序中的“注销”按钮之前,一切似乎都很好。这导致了问题。只要单击注销按钮,我的解锁功能就会运行,然后beforeunload将被触发,功能将使用相同的recordID第二次运行。一旦用户点击Logoff,我就会忽略beforeunload但由于Logoff位于单独的iframe中,因此无效。我想知道每次解锁功能运行之前是否有办法检查recID。如果ID与之前的ID相同,我应该跳过并且不运行该功能。以下是我的功能示例:

window.onbeforeunload = function () {
    var recID = $.trim($("#recordID").val());
    //Here I should check if recID is the same or different. If function runs more than once recID always should be compared with the previous.
    if(recID){
        removeUnlock(recID); //Call function to remove record.
    }

    return 'Are you sure you want to leave?';
}

如果有人知道如何实现这一目标或更好地处理这种情况,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您的网页位于同一个网域How to communicate between iframe and the parent site?,则可以在iframe与消息sessionStorage in iframe之间或通过会话存储进行通信。

因此,如果注销正确,您应该从注销iframe发送消息,并在您的代码中收听这些事件时保存此信息。然后在onbeforeunload中添加其他条件。