如何在 php 中单击浏览器的刷新或后退按钮时创建警报框

How to create an alert box when the browser's refresh or back button is clicked in php?

本文关键字:按钮 创建 刷新 php 单击 浏览器      更新时间:2023-09-26
这可能是

一个重复的问题,但有一件事我需要知道,但我无法在任何其他问题上找到它。

当单击浏览器的后退刷新按钮时,如何弹出警报框,而不是单击任何其他按钮,如主页等,将页面重新发送到另一个页面?

我能够使用以下代码制作一个警报框:

<script type="text/javascript">
    window.onbeforeunload = function() {
        return 'If you resubmit this page, progress will be lost.';
    };
</script>

但是当我单击我的主页按钮时,该按钮会将页面加载到另一个页面,警报框仍然会触发。我只需要浏览器的刷新和后退按钮的警报框。

任何帮助都非常感谢。提前谢谢。:)

更新

这是适用于 jsfiddle.net 但不适用于我的浏览器的代码。

<html>
<head>
<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>
</head>
<body>
    <form method="post" action="something.php" name="myForm">
        <input type="submit" name="homepage" value="Please Work" id="homepage" href="something.php">
    </form>
</body>
</html>

现在我的问题是它在我的浏览器中不起作用但与 jsfiddle.net 一起使用的原因是什么?我错过了什么吗?要配置的东西等?谢谢。

JSFIDDLE 链接:http://jsfiddle.net/bawvu7yy/4/

仅当文档中存在单击的按钮时,才能确定单击的内容以触发导航。假设这个"主页"按钮是相关文档中的一个元素,也许您可以使用一个标志来跟踪是否单击了该按钮。

// assume that the homepage button has an id "homepage".
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.';
  }
};

这样,仅当其他任何内容导致页面导航时,才会发生弹出窗口。

编辑:我已经提供了一个关于jsfiddle的工作演示。该链接不会触发弹出窗口,但其他两个行为与"返回"和"刷新"完全相同的按钮会触发弹出窗口。在此更新中,clicked = true;被注释掉,这表明在未执行时,主页按钮的弹出窗口也开始出现。

第二次编辑:您在元素存在之前运行脚本。将带有 JavaScript 的 <script> 标签移动到<body>的底部。

只需在 javascript 中使用 window.onbeforeunload 函数,请使用下面的代码。

<script type="text/javascript">
     window.onbeforeunload = function() { return "Are you sure you want to leave?"; }
</script>

希望这对你有帮助