如何使用javascript在确认框中单击确认时重定向到另一个页面?

时间:2015-01-13 00:58:11

标签: javascript html

我有以下代码:

<html>
<head>
</head>

<body>
  <form method="post" action="something.php" name="myForm">
    <input type="submit" name="homepage" value="Please Work" id="homepage">
  </form>
<script>
  var btn = document.getElementById('homepage'),
  clicked = false;

  btn.addEventListener('click', function () {
      clicked = true;
  });

  window.onbeforeunload = function () {
      if(!clicked) {
          return 'If you resubmit this page, progress will be lost.';
      }
  };
</script>
</body>
</html>

当用户离开页面时(“后退”或“刷新浏览器按钮”),此代码会弹出一个确认框,而不会在单击表单内的按钮时弹出。

问题 当用户点击&#34;离开此页面时,如何重定向到其他页面?确认框的按钮?我尝试了不同的方法,但它不起作用。我使用谷歌浏览器。

非常感谢任何帮助。先感谢您。 :)

修改

所以我得到了一些实际有效的代码,但事实恰恰相反。当我点击&#34;离开此页&#34;它停留,当我点击&#34;留在这个页面&#34;它重定向。

var onUnloadClick = 0;

function redirectTimer() {
    setInterval(function(){window.location = "sample exam.php"},10);
}

var btn = document.getElementById('homepage'),
clicked = false;

btn.addEventListener('click', function ()   {
    clicked = true;
});

window.onbeforeunload = onbeforeunload_Handler;

function onbeforeunload_Handler() {
    if(!clicked) {
        if(onUnloadClick == 0) {
            redirectTimer();
            return 'If you resubmit this page, progress will be lost.';
        }
    }
};

问题 我将如何修改此代码并执行相反的功能?

2 个答案:

答案 0 :(得分:1)

你不能搞乱浏览器进程。如果单击后退,它将返回。如果单击“刷新”,则会刷新页面。他们在那里的原因是因为他们有自己的功能。你可以尝试不同的方法来做你想做的事情,但我认为这不可能。

答案 1 :(得分:0)

我不认为这是可能的。在这里查看答案: Intercept selection in window.onbeforeunload dialog

没有定义的方法来拦截onbeforeunload事件。在这里可以看到进一步的参考: Intercept selection in window.onbeforeunload dialog

当启动onbeforeunload事件时,用户已经选择了他想要去的地方;如果浏览器允许网页上的javascript覆盖用户的操作,则没有意义。

因此,无论如何都不应该将用户带到除用户想去的地方之外的其他位置。

更新了已更新问题的答案: 它不可能做你想做的事。当您选择&#34;留在此页面时,您被重定向的原因&#34;而不是因为你的javascript函数重定向只生效为什么你留在页面上。当您选择离开页面时,浏览器将不再执行您的任何代码。因为浏览器不希望您覆盖用户的选择。

我的建议: 重新思考你想要的东西。当用户尝试转到其他位置时,您希望将用户重定向到其他页面。我真的不认为这是正确的。

你的最终目标是什么?如果你让我知道......可能我可以为你提供更好的解决方案。