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

当使用javascript在确认框中单击确认时,如何重定向到另一个页面?,javascript,html,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

我有以下代码:

<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>
问题
我将如何修改此代码并执行相反的功能?

我认为这是不可能的。在这里查看答案:

没有定义拦截onbeforeunload事件的方法。可在此处查看更多参考资料:

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

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

更新问题的更新答案: 做你想做的事是不可能的。当你选择“停留在这个页面”时,你被重定向的原因是因为你的javascript重定向功能只有在你停留在这个页面的时候才会生效。当您选择离开页面时,浏览器将不再执行您的任何代码。因为浏览器不希望您覆盖用户的选择

我的推荐: 重新考虑你想要什么。当用户试图转到其他地方时,您希望将用户重定向到其他页面。我真的不认为那是正确的


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

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

我在确认框(chrome)中得到了“留在这一页”或“离开这一页”选项。没有写“确定/确认”的内容。您确定您的问题吗?确定/确认与“离开此页”相同。很抱歉没有说出确切的话,但我对我的问题有把握。:)无法更改“离开此页面”按钮的功能。用户可以控制他们选择去哪里。您的提示只是询问他们是否确定。你到底想做什么?我正在用php做一个考试程序。当用户开始他/她的考试时,他/她将不能让考试未完成。如果他/她尝试单击“后退”或“刷新”按钮,将弹出一个确认框(我上面给出的代码),告诉用户如果他/她希望不完成考试,将获得0分。如果用户仍然离开页面,则重定向将进入该页面。用户将被重定向到主页。知道如何使用onUnload吗?我想那会管用,但我的知识有限,所以我正在努力寻找资源。哦,我明白了。。我能做些什么来实现我想做的?也许是一个onUnload?但我不知道为什么它不起作用。我试过onnload,但不起作用。不确定onUnload是否工作或重定向代码本身。我使用了location.replace、location.host等,但运气不好。请阅读您对实际操作的评论。@Nek要求就是要求。但我认为你的要求不对。如果学生将google.com放在浏览器地址栏上,任何人都绝对无法将学生重定向到其他页面。同样的情况也适用于当您试图关闭浏览器窗口时,网页不应该将用户带到其他页面。想想看。。。你正在浏览某个网页,比如说amazon.com,你尝试转到google.com或尝试关闭该网页,amazon.com会将你重定向到zappos.com。那太烦人了。这就是我做这个要求的原因。我的目标是防止学生未完成考试,因为该学生的分数为0。现在,如果他/她仍然离开(即使他因为弹出窗口而知道),那么他/她将获得0分。我的目标是防止作弊,因为提供的问题是从数据库中随机获取的,所以我应该防止用户返回或刷新页面来更改问题,从而解决我的问题。我希望你能帮助我。@Nek现在我明白你的最终目标了。客户端限制,如您试图设置的限制,并不能解决您的问题。学生可以始终停留在同一页面上,在同一浏览器中打开一个新选项卡以获取一组新问题,并且可以很好地回答这些问题,忘记上一页并关闭机器。我想说的是,您试图达到的目标只有通过加入服务器端逻辑才能实现。如果您有兴趣的话,我可以给出一个解决方案,您可以在服务器端实现它。让我知道。
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.';
        }
    }
};