Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当用户离开站点时显示消息_Javascript_Popupwindow - Fatal编程技术网

Javascript 当用户离开站点时显示消息

Javascript 当用户离开站点时显示消息,javascript,popupwindow,Javascript,Popupwindow,我正在寻找一种方法,如果用户只查看了一个页面就离开了我的站点,那么可以向他显示一条消息 我发现这个()聪明的解决方案,但它有一些缺陷: staying_in_site = false; Event.observe(document.body, 'click', function(event) { if (Event.element(event).tagName == 'A') { staying_in_site = true; } }); window.onunload =

我正在寻找一种方法,如果用户只查看了一个页面就离开了我的站点,那么可以向他显示一条消息

我发现这个()聪明的解决方案,但它有一些缺陷:

staying_in_site = false;

Event.observe(document.body, 'click', function(event) {
  if (Event.element(event).tagName == 'A') {
    staying_in_site = true;
  }
});

window.onunload = popup;

function popup() {
  if(staying_in_site) {
    return;
  }
  alert('I see you are leaving the site');
}
刷新页面或使用“后退”按钮时,也会显示此消息

您是否知道更好的解决方案,或者如何在上面的代码中修复它?我不是javascript大师:)


我的目的是只在非常特定的登录页上添加代码,并在人们离开页面时显示消息,而不下载我的试用软件或阅读我网站上的其他页面。

我首先要说,我不会以任何方式建议您这样做。这是一种糟糕的做法,它只会激怒用户,让你看起来非常绝望。我重复一遍,不要这样做,这不是一个好主意,这是愚蠢的,这不是一个好主意

但是你可以这样做,只有当用户点击远离网站的链接时才显示消息。 您可以通过查看链接的
href
属性并检查它是否是外部站点来完成此操作。如果是,则显示消息


但我重复一遍,不要这样做 我们可能会原谅您在卸载之前
window.onbeforeunload
。但就是这样

在某些情况下,这可能非常有用,没有这一功能会让人恼火。我为客户开发的一个应用程序要求用户在一个页面上输入大量数据(接近25个字段)。我知道如果表单被分成更多的页面,它会更好、更有用,但这不是重点。有些情况下,员工(大多数不是非常精明的计算机用户)输入数据,但出于任何原因,没有提交就离开了页面(我相信这是偶然的),导致了挫败感。在这种情况下,我很乐意使用
window.onbeforeunload

我不想帮你这么做!!!请不要这样做,太烦人了!当人们离开页面而不下载我的试用软件或阅读我的网站上的其他页面时,显示消息。是的,大多数(聪明)用户将这些站点标记为WOT上的“危险”。@布瑞恩,考虑用户在不下载试用软件的情况下决定离开您的网站时的想法。他们已经决定你的软件在那个特定的时间不适合他们,现在你要弹出一个对话框让他们重新考虑?你意识到这种信息是多么的粗鲁和愤怒吗?相信我——如果人们现在不下载你的软件,他们肯定不会在你实现这样的东西时下载。善待你的用户。别傻了,伙计们,别告诉我该做什么和不该做什么。我不知道“道德警察”在监视这个论坛:-)说真的,既然你不知道我要在这个窗口展示什么,你不应该这么快就忽略我想做的事情。我相信测试,这是为了测试。