Javascript 如何在浏览器';在php中单击“刷新”或“返回”按钮?

Javascript 如何在浏览器';在php中单击“刷新”或“返回”按钮?,javascript,html,Javascript,Html,这可能是一个重复的问题,但有一件事我需要知道,我无法在任何其他问题上找到它 当单击浏览器的“刷新后退”按钮,但没有任何其他按钮(如主页等)将页面重定向到另一页面时,如何弹出警告框 我能够使用以下代码创建一个警报框: <script type="text/javascript"> window.onbeforeunload = function() { return 'If you resubmit this page, progress will be los

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

当单击浏览器的“刷新后退”按钮,但没有任何其他按钮(如主页等)将页面重定向到另一页面时,如何弹出警告框

我能够使用以下代码创建一个警报框:

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

window.onbeforeunload=函数(){
return“如果重新提交此页面,进度将丢失”;
};
但当我点击主页按钮,将页面加载到另一个页面时,警报框仍会触发。我只需要浏览器的“刷新”和“返回”按钮的“警报”框

非常感谢您的帮助。提前感谢。:)

更新

这是可用于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>

var btn=document.getElementById(“主页”),
单击=假;
btn.addEventListener('click',函数(){
单击=真;
});
window.onbeforeunload=函数(){
如果(!单击){
return“如果重新提交此页面,进度将丢失”;
}
};
现在我的问题是,为什么它不能在我的浏览器中工作,但可以与jsfiddle.net一起工作?有什么我错过的吗?要配置的东西等?谢谢


JSFIDDLE链接:

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

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

window.onbeforeunload=function(){return“确定要离开吗?”;}

希望这能帮助您

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

// 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.';
  }
};
这样,只有当任何其他原因导致页面导航时,才会出现弹出窗口

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


第二次编辑:您正在元素存在之前运行脚本。将带有JavaScript的
标记移动到

的底部,这是不可能的,因为为了判断他们是在刷新、返回还是去其他地方,您需要知道他们试图访问的url,这是不可能的@user4035
return
窗口中的
onbeforeuload
事件中传递
字符串时显示弹出窗口。参考资料:@PatrickRoberts谢谢,我不知道。这正是他已经拥有的。。。这并不能回答问题。点击任何按钮都会弹出消息!我明白你想说什么,但我没有足够的知识来付诸实施。知道单击了哪个按钮是正确的方法。我试过你的答案,但不起作用。它只是刷新,所有按钮上都没有警告框。这是因为您的代码可能抛出了一个错误,因为我猜您没有id为“homepage”的按钮。如果您希望示例代码真正起作用,您必须提供有关此主页按钮的更多信息。我在尝试您的代码之前编辑了我的代码,我非常确定一切正常,只是现在它没有显示警报。以下是我主页的代码。很抱歉迟了答复。这里是几乎所有与主页按钮有关的内容。有关代码,请参阅。