Javascript onload and onunload

Javascript onload and onunload

本文关键字:onunload and onload Javascript      更新时间:2023-09-26

考虑以下HTML片段,其中包含一些使用promptunload的javascript。prompt()方法运行良好,但我希望在重新加载或离开页面时发出类似"再见,用户"的警告。非常感谢您的帮助。

<body onload="promptName()" >

        <script type="text/javascript">
        function promptName()
        {
            var userName = prompt("What's your name ?", "")
            return userName;
        }
        function goodBye()
        {
            alert("Goodbye, " + promptName() + "!");
        }
        window.onunload = goodBye();
        </script>
  </body>

你应该这样写:

window.onunload = goodBye;

此外,您可能会考虑在某些浏览器中使用onbeforeunload事件:

window.onbeforeunload = goodBye;

编写window.onunload = goodBye();时,将从goodBye返回的任何处理程序分配给unload事件。由于没有返回任何内容,因此将不会有事件处理程序。您需要引用函数:window.onunload = goodBye;

你不能这样分类:window.onunload=goodBye();

如果你想用这种方式,你有三种方式:

// by this way you use the name of the function, so you override the onunload function with goodBye function
window.onunload = goodBye;

  // This way you redefine the function
    window.onunload = function(){goodBye()};

我最喜欢的是因为它可以让你添加更多的功能:

// This way you create a event listener which allows you to add as many functions as you ant
window.addEventListener("unload", goodBye, false); 

如图

window.onbeforeunload = function() {
    alert("Goodbye, " + promptName() + "!");
};

window.onbeforeunload = goodBye;

尽管我建议将用户名保存到glob中,方法是在第一次提示后加载接收用户名的函数外设置一个var,然后当他们离开时,您不必再次提示他们输入姓名

<body onload="promptName()" >

        <script type="text/javascript">
        function promptName()
        {
            var userName = prompt("What's your name ?", "")
            return userName;
        }

        window.onbeforeunload = function() {
    alert("Goodbye, " + promptName() + "!");
}
        </script>
  </body>

加载前

您可以这样做:

var userName = ""; 
function promptName()
{
    userName = prompt("What's your name ?", "")
    return userName;
}
function goodBye()
{
   alert("Goodbye, " + userName  + "!");
}
window.onload=promptName();     
window.onbeforeunload = goodBye();

这对我有效,但公认的答案不适用。这也支持更多的浏览器事件。

这也可以与各种onbeforeunloadbeforeunload脚本一起使用。

var doOnUnload = window.attachEvent || window.addEventListener;
var eventType = window.attachEvent ? 'onunload' : 'unload';
doOnUnload(eventType, function(e) 
{
    console.log('godbye');
});