2

我试图让这个 Javascript 正常工作。我的意图是,当用户试图关闭网站页面以获得“留在当前页面或关闭”的警报时,如果他们点击“确定”我希望它关闭,如果他们点击“取消”我希望它重定向到另一个页面。问题是,当他们尝试转到同一站点上的另一个页面时,它会给他们那个弹出窗口。我希望它只在关闭时显示,而不是在离开页面到另一个页面时显示。我不确定这是否可能,我非常感谢您的帮助和评论。

    window.onbeforeunload = fget;
function yPop(url) {
  var found = 1;
  window.onbeforeunload = '';
  window.location = url;
  return false;
}
function fget() {
  alert("Thank you for visiting our website, you are welcome any time! \n\n");
  window.location = "http://NewLink.com";
  return "\n________________________\n\n PRESS 'CANCEL' To Stay On The Current Page \n\n________________________\n";
}
4

3 回答 3

18

问题是,当他们尝试转到同一站点上的另一个页面时,它会给他们那个弹出窗口。我希望它仅在关闭时显示

  1. 不要这样做。

  2. 您不能仅检测关闭,但您可以通过单击内部链接和其他类型的离开来区分离开,包括外部链接、后退按钮、关闭和选择/键入新 URL。在页面加载后的脚本中,设置 onbeforeunload 事件,然后扫描所有 document.links 并针对当前 location.host 测试它们的 .host。如果它们匹配,则为内部链接。在这种情况下,向它们添加一个 onclick 事件,在返回 true 之前删除 onbeforeunload 事件,从而允许链接正常运行而不会发出警告。

  3. 说真的,不要这样做。这是令人难以置信的恼人,傲慢和无用的。使用离开-纠缠脚本的网站管理员被谴责到互联网地狱的第四圈,他们必须在剩下的时间里只使用ed、一个破旧的牙刷和一个 <layer>-tag 来使样式表在 Netscape 4 上工作。

于 2009-01-15T18:45:59.377 回答
0

您可能需要考虑构建一个“您即将离开此站点”页面。这个想法是,您将不在您网站上的页面上的 URL 包装为指向该页面,让访问者知道他们即将离开,并让他们有机会返回或继续。

它比意外的模态对话框更温和,它可以让您更好地格式化您的消息,并最终为您的用户提供完全相同的选择。

于 2009-03-07T11:49:36.717 回答
0

您应该使用窗口 onbeforeunload 事件。

http://msdn.microsoft.com/en-us/library/ms536907(VS.85).aspx

https://developer.mozilla.org/en/DOM/window.onbeforeunload

对于 jquery 用户:

$(window).unload( function () { alert("Bye now!"); } );
于 2009-01-15T18:35:39.193 回答