【问题标题】:Javascript onload and onunloadJavascript onload 和 onunload
【发布时间】:2012-04-12 01:35:30
【问题描述】:

考虑以下 HTML sn-p,其中包含一些使用 promptunload 的 javascript。 prompt() 方法工作正常,但我想在重新加载或离开页面时提醒诸如 Goodbye, user 之类的东西。非常感谢任何帮助。

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

【问题讨论】:

标签: javascript html onload onunload


【解决方案1】:

你应该这样写:

window.onunload = goodBye;

另外,您可以考虑在某些浏览器中使用 onbeforeunload 事件:

window.onbeforeunload = goodBye;

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

【讨论】:

    【解决方案2】:

    你不能这样说: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); 
    

    【讨论】:

    • 请注意:最后一个示例将破坏 9 以下的 IE 版本。
    • addEventListener 在 IE8 中无效-
    • 在我的示例中什么在 IE8 中不可用?
    • 我不确定我能否比我之前的评论更好地解释它。 developer.mozilla.org/en/DOM/…
    【解决方案3】:

    如所见HERE

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

    window.onbeforeunload = goodBye;
    

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

    【讨论】:

      【解决方案4】:
      <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>
      

      onbeforeunload

      【讨论】:

      • 但是在提示名字之后就给出了告别信息;我想在 F5 或单击关闭图标后收到此再见消息
      • @George 看到我的回答,你应该引用这个函数,而不是执行它。
      【解决方案5】:

      你可以这样做:

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

      【讨论】:

      • 提示工作正常,问题是单击关闭按钮后我想要再见消息。无论是 onunload() 还是 onbeforeunload(),这段代码都会在提示后给出再见消息
      • 只是为了向您展示活动。你必须像这样改变你的代码 function goodBye() { return ("Goodbye, " + userName + "!"); }
      【解决方案6】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-16
        相关资源
        最近更新 更多