gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:31:57 24 4
gpt4 key购买 nike

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

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

我能够使用这段代码制作一个警告框:

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

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

关于javascript - 如何在 php 中单击浏览器的刷新或后退按钮时创建警告框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27894763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com