5

prompt考虑下面的 HTML 片段,其中包含一些使用和的 javascript unload。该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>
4

6 回答 6

12

你应该这样写:

window.onunload = goodBye;

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

window.onbeforeunload = goodBye;

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

于 2012-03-28T12:53:25.000 回答
3

你不能这样说: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); 
于 2012-03-28T12:59:18.950 回答
1
<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>

卸载前

于 2012-03-28T12:51:31.400 回答
1

这里所见

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

或者

window.onbeforeunload = goodBye;

虽然我建议通过在第一次提示后接收用户名的加载函数外部设置一个 var 来将用户名保存到一个 glob,但是当他们离开时你不必再次提示他们输入他们的名字

于 2012-03-28T12:53:31.380 回答
1

你可以这样做:

var userName = ""; 

function promptName()
{
    userName = prompt("What's your name ?", "")
    return userName;
}

function goodBye()
{
   alert("Goodbye, " + userName  + "!");
}

window.onload=promptName();     
window.onbeforeunload = goodBye();
于 2012-03-28T12:58:48.710 回答
0

这对我有用,但接受的答案没有。这也支持更多的浏览器事件。

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

var doOnUnload = window.attachEvent || window.addEventListener;
var eventType = window.attachEvent ? 'onunload' : 'unload';

doOnUnload(eventType, function(e) 
{
    console.log('godbye');
});
于 2017-10-23T20:57:26.473 回答