首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript问题:先卸载还是先卸载?

JavaScript问题:先卸载还是先卸载?
EN

Stack Overflow用户
提问于 2010-09-23 13:05:45
回答 4查看 17.2K关注 0票数 20

因此,当页面刷新或用户退出页面以备将来使用时,我希望将一些信息存储在浏览器的本地存储中。我想我应该使用一些Javascript来检测事件并存储页面访问的状态。

现在我的困境是:我应该使用Onbeforeunload还是Onunload方法来实现这个目标?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-23 13:14:15

为了安全起见,为什么不把它注册到两个地方呢?只需让侦听器检查数据是否已存储并提前退出即可。

下面是一个使用事件属性的快速示例:

代码语言:javascript
复制
window.onunload = window.onbeforeunload = (function(){

  var didMyThingYet=false;

  return function(){
    if (didMyThingYet) return;
    didMyThingYet=true;
    // do your thing here...
  }

}());

或者你可以使用attachEvent:

代码语言:javascript
复制
(function(){

  var didMyThingYet=false;

  function listener (){
    if (didMyThingYet) return;
    didMyThingYet=true;
    // do your thing here...
  }

  window.attachEvent("onbeforeunload", listener);
  window.attachEvent("onunload", listener);    

}());
票数 20
EN

Stack Overflow用户

发布于 2010-09-24 04:21:24

执行此操作的合适位置是onunload。onbeforenload是在你需要阻止用户离开页面时使用的,比如当有未保存的数据时。

我对编写涵盖所有情况的代码感到厌倦,因为您不愿意测试所有情况。如果你做了研究,发现它在不同的浏览器上太复杂了,是的,继续做你能做的事情。然而,我相信在卸载时进行本地存储是没有问题的。我确实遇到了一个问题,试图在卸载时向服务器发送信息。这并不是跨浏览器可靠地发生的,所以我最终使用了一种同时使用unload和beforeunload的方法,但只是在尽职调查之后。

所以我的建议是在下载时做,检查你所有的浏览器。

票数 8
EN

Stack Overflow用户

发布于 2010-09-23 13:13:49

我相信Onbeforeunload是一个安全的赌注。浏览器有可能不能完全执行onunload脚本-例如,如果你在onunload中有警告,如果你关闭窗口,chrome就不会显示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3775566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档