问题
我有一个应该在window.onbeforeunload上运行的函数。在Chrome中,这可以正常工作,并在关闭或刷新选项卡或窗口时运行。但是,在Firefox中,它只在刷新时运行,而不是关闭。
守则
以下是一个例子:
var onStorageUpdate = function(){
var lastUnloaded = localStorage.getItem("LastUnloaded");
if(lastUnloaded === null){
$("div").text("Never stored");
}
else{
$("div").text(lastUnloaded);
}
};
onStorageUpdate();
window.addEventListener("beforeunload", function(){
var now = Date.now();
localStorage.setItem("LastUnloaded", now);
});
window.addEventListener("storage", function(){
onStorageUpdate();
});
以上代码中应的事件顺序如下:
LastUnloaded
。如果没有检索到任何内容,则显示" Never Stored",否则显示已存储的值(应为长整数时间戳)LastUnloaded
。 这是关闭窗口时似乎无法在Firefox中运行的部分。 演示
以下是示例的代码:http://codepen.io/jakelauer/full/NqRyqQ/
要测试它,请在两个不同的窗口或标签中打开链接。您应该注意到,当刷新任一选项卡时,两个选项卡都会更新以显示相同的时间戳。在Chrome中,您会注意到如果您关闭一个标签页,另一个标签页将更新其时间戳。在Firefox中,您会注意到时间戳未更新。
有什么想法吗?提前谢谢!
答案 0 :(得分:0)
我最后只使用了onunload,它在任何地方都运行良好。