OnUnload message needed for external links

▼魔方 西西 提交于 2019-12-10 02:38:13

问题


I need a message script that will only come up when people are leaving the current webpage and not the current website.

When people are leaving the website entirely, the message will come up and they will need to press the OK button to stay at the current page (and cancel to leave the website).

The script may not run when people actually stay on the website or when they click on internal links or pages.

Can this be done?


回答1:


Check out this very basic example solution. It sets the onbeforeunload handler but then removes it if the user clicks an internal link. Below is a generic version of the code from the example solution.

HTML:

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

JS (uses jQuery):

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



回答2:


I got a similar problem. However in my case this message was supposed to be translated according with the user's language, if anyone presses F5 or close the window.

Follow my small example.

<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>



回答3:


In most cases you don't need a popup for all events except the one: user closes the window.

Here is my solution for this:

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

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


来源:https://stackoverflow.com/questions/2921206/onunload-message-needed-for-external-links

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!