我的网站是基于AJAX的,所以我有一个window.onbeforeunload = function(){};。但是,我有mailto链接,当我单击那些mailto链接时,弹出确认重新加载,我不喜欢。有没有办法编写一个函数来删除window.onbeforeunload = function(){};,从mailto链接中拉出邮件编辑器,然后放回window.onbeforeunload = function(){};

谢谢

最佳答案

您可以在锚点之后添加如下脚本:

<a href="mailto: [email protected]">Mail</a>
<script>
  (function(w, d){
    var anchors = d.getElementsByTagName('a');
    var a = anchors[anchors.length - 1];

    a.onclick = function(){
      var old_unload = w.onbeforeunload;
      w.onbeforeunload = null;

      w.location = a.href;

      setTimeout(function(){
        w.onbeforeunload = old_unload;
      }, 0);

      return false;
    };

  })(window, document);
</script>


JSFiddle Demo

注意:第一个修订版不起作用,因为w.onbeforeunload = old_unload在浏览器更改为mailto页面之前正在运行。使用setTimeout使分配异步进行可解决该问题。

关于javascript - JavaScript函数的删除和替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17582311/

10-13 06:12