【问题标题】:How to create an alert box when the browser's refresh or back button is clicked in php?在php中单击浏览器的刷新或后退按钮时如何创建警报框?
【发布时间】:2015-01-12 03:09:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这是不可能的,因为为了判断他们是在刷新、返回还是去其他地方,你需要知道他们试图去的 url,这是不可能stackoverflow.com/questions/1686687/…
  • @user4035 returnwindowonbeforeunload 事件内传递String 时显示一个弹出窗口。参考:MDN window.onbeforeunload
  • @PatrickRoberts 谢谢,我不知道。

标签: javascript html


【解决方案1】:

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

// 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 上提供了一个工作演示。该链接不会触发弹出窗口,但其他两个按钮的行为与“返回”和“刷新”完全相同,会触发弹出窗口。在this update 中,clicked = true; 被注释掉,这表明在未执行此操作时,Home 按钮也开始出现弹出窗口。

第二次编辑:您在元素存在之前运行脚本。将带有 JavaScript 的 &lt;script&gt; 标记移到 &lt;body&gt; 的底部。

【讨论】:

  • 我明白你想说什么,但我没有足够的知识来让它发挥作用。知道点击了哪个按钮是正确的方法。我试过你的答案,但它不起作用。它只是在所有按钮上没有警报框的情况下刷新。
  • 那是因为您的代码可能抛出了错误,因为我猜您没有 ID 为“主页”的按钮。如果您想要实际工作的示例代码,则必须提供有关此主页按钮的更多信息。
  • 我在尝试你的代码之前编辑了我的代码,我很确定一切都很好,只是现在它没有显示警报。
  • 这是我主页的代码。
  • 抱歉回复晚了。这几乎是与主页按钮有关的所有内容。代码见jsfiddle.net/hLd4jush
【解决方案2】:

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

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

希望对你有帮助

【讨论】:

  • 这正是他已经拥有的……这并不能回答问题。
  • 这将在任何按钮单击时弹出消息!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2013-08-29
  • 1970-01-01
  • 2013-08-11
  • 2017-11-13
相关资源
最近更新 更多