2010-05-27 31 views
6

我需要一个消息脚本,它只会在人们离开当前网页而不是当前网站时出现。外部链接所需的OnUnload消息

当人们完全离开网站时,消息会出现,他们需要按OK按钮才能保持当前页面(并取消离开网站)。

当人们实际停留在网站上或当他们点击内部链接或页面时,脚本可能无法运行。

可以这样做吗?

+0

PS我的网站http://www.consolepro.net这profides任天堂Wii的softmod软MOD 确实有其生成的链接的全自动 – tumtummetjes 2010-05-27 13:43:34

+0

可能的复制脚本[离开网站时显示警告,而不仅仅是页面](http://stackoverflow.com/questions/2365994/display-a-warning-when-leaving-the-site-not-just-the-page) – KyleMit 2017-04-13 12:34:35

回答

5

结帐this very basic example solution。它设置onbeforeunload处理程序,但如果用户单击内部链接,则将其删除。以下是示例解决方案代码的通用版本。

HTML

<a href="internal_link.html">internal link</a> 
<a href="http://www.example.com">external link</a> 

JS(使用jQuery):

window.onbeforeunload = function(){ 
    return "Are you sure you want to leave our website?"; 
} 
$(function(){ 
    $('a, input, button').click(function(){ 
      window.onbeforeunload = null; 
    }); 
}); 
+0

那么总代码会包含查询字符串等呢?我不明白内部链接的一部分?因为我无法更改我们的内部链接,这些链接是由我们的购物车 – tumtummetjes 2010-05-28 00:18:02

+0

自动生成的,而且正在关闭HTML标记正文部分等。 – tumtummetjes 2010-05-28 00:18:53

+0

行'internal link'仅仅是一个链接的示例,它与“location.host”具有相同的域名。 。任何对你的网站“内部”的链接(意味着它不链接到不同的域)应该导致'if'语句'this.href.match(location.host)'返回'true',导致' onbeforeunload'处理程序将被删除,从而防止出现“弹出消息”消息“您确定要离开我们的网站吗?”消息。 [...继续以下...] – Adam 2010-06-02 04:24:24

1

我有一个类似的问题。然而,在我的情况下,如果有人按F5或关闭窗口,此消息应该根据用户的语言进行翻译。

按照我的小例子。

<html> 
<head> 
<script type="text/javascript"> 
function closeThis() 
{ 
    if (window.confirm("Minha mensagem!")){ 
     window.close(); 
    } 
} 

function test() 
{ 
    // Add a warning in case anyone tries to navigate away or refresh the page 
    return confirm("Minha mensagem"); 
} 


</script> 
</head> 
<body onbeforeunload=test();> 
<p>Hello World! Press F5 or Close this Window</p> 
</body> 
</html> 
1

在大多数情况下,除了一个以外,您不需要弹出所有事件:用户关闭窗口。

这里是我的这个解决方案:

$(window).on('beforeunload', function() { 
    /* whatever you want here */ 
} 

$(document).on('click keydown', function(){ 
    $(window).off('beforeunload'); 
});