Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onload和onunload_Javascript_Html_Onload_Onunload - Fatal编程技术网

Javascript onload和onunload

Javascript onload和onunload,javascript,html,onload,onunload,Javascript,Html,Onload,Onunload,考虑下面的HTML片段,其中包含一些利用prompt和unload的javascript。prompt()方法工作正常,但我希望在重新加载或离开页面时发出类似“再见,用户”之类的警报。非常感谢您的帮助 <body onload="promptName()" > <script type="text/javascript"> function promptName() { var userName

考虑下面的HTML片段,其中包含一些利用
prompt
unload
的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>

函数promptName()
{
var userName=prompt(“您叫什么名字?”,“”)
返回用户名;
}
函数再见()
{
警报(“再见,+promptName()+”!”;
}
window.onunload=再见();

函数promptName()
{
var userName=prompt(“您叫什么名字?”,“”)
返回用户名;
}
window.onbeforeunload=函数(){
警报(“再见,+promptName()+”!”;
}

你应该这样写:

window.onunload = goodBye;
var userName = ""; 

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

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

window.onload=promptName();     
window.onbeforeunload = goodBye();

也可以考虑在浏览器中使用OnEndoLoad事件:

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

如图所示


虽然我建议通过在load func外部设置一个var将用户名保存到glob,该var在第一次提示后接收用户名,但是当他们离开时,您不必再次提示他们输入用户名。您可以这样做:

window.onunload = goodBye;
var userName = ""; 

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

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

window.onload=promptName();     
window.onbeforeunload = goodBye();

您不能这样访问:window.onunload=bye()

如果你想这样做,你有三种方法:

// 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 create a event listener which allows you to add as many functions as you ant
window.addEventListener("unload", goodBye, false); 

这对我有效,但公认的答案却不行。这还支持更多浏览器事件

这也可以与各种
onbeforeunload
beforeunload
脚本一起使用

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

doOnUnload(eventType, function(e) 
{
    console.log('godbye');
});

但在提示姓名后,它会发出“再见”的信息;我想在F5或单击“关闭”后收到此“再见”消息icon@George看我的答案,你应该引用函数,而不是执行它。你测试的浏览器是什么?根据MDN,onbeforeunload在不同浏览器中的行为不同:只需注意:最后一个示例将破坏9以下的IE版本。
addEventListener
在IE8中不可用。在我的示例中,什么在IE8中不可用?我不确定我能比我之前的评论更好地解释它。提示工作正常,问题是我想在点击关闭按钮后收到再见消息。无论是onunload()还是onbeforeunload(),这段代码都会在提示符后给出再见消息,这只是为了向您显示事件。您必须更改代码,就像这个函数再见(){return(“再见,“+userName+”!”);}
// This way you create a event listener which allows you to add as many functions as you ant
window.addEventListener("unload", goodBye, false); 
var doOnUnload = window.attachEvent || window.addEventListener;
var eventType = window.attachEvent ? 'onunload' : 'unload';

doOnUnload(eventType, function(e) 
{
    console.log('godbye');
});