Javascript 当用户离开我的网站时显示弹出窗口

Javascript 当用户离开我的网站时显示弹出窗口,javascript,jquery,Javascript,Jquery,我希望用户在离开我的网站时,不仅仅是离开网页,而是离开整个网站时,都能得到一个弹出窗口 我实现了一个方法,但每次离开网页时它都会弹出 window.onbeforeunload = function (evt) { var message = 'Are you sure you want to navigate away from myWEbSite?'; if (typeof evt == 'undefined') { evt = window.event; }

我希望用户在离开我的网站时,不仅仅是离开网页,而是离开整个网站时,都能得到一个弹出窗口

我实现了一个方法,但每次离开网页时它都会弹出

window.onbeforeunload = function (evt) {


  var message = 'Are you sure you want to navigate away from myWEbSite?';
  if (typeof evt == 'undefined') {
    evt = window.event;

  }
  if (evt ) {
    evt.returnValue = message;
  }

  return message;

 }

您无法获取新的目标url,因为这是受保护的信息。请参阅

因此,如果访问者离开网站,您将无法看到


备选方案:您可以监听指向其他网页的超链接上的所有单击,并实现捕获外部链接的功能。

您可以玷污自己的JQuery选择器,如下所示:

$.expr[':'].external = function(obj){
   return !obj.href.match(/^mailto\:/) && (obj.hostname != location.hostname);
};
$.expr[':'].internal = function(obj){
   return obj.hostname == location.hostname;
};
然后您可以执行以下操作:

$(function() {
    var unloadMessage = function() {
        return "Are you sure you want to navigate away from myWEbSite?";
    };

    $('a:internal').click(function() { 
        window.onbeforeunload = null;
    });
    $('form').submit(function() { 
        window.onbeforeunload = null;
    });

    $('a:external').click(function() { 
        window.onbeforeunload = unloadMessage;
    });

    window.onbeforeunload = unloadMessage;
});
在您的特定情况下,只要在单击导航链接或提交内部表单时将window.onbeforeunload==null即可