gpt4 book ai didi

javascript - 在 Rails 中,onbeforeunload 无法在 Chrome 浏览器中始终如一地工作

转载 作者:行者123 更新时间:2023-11-30 00:05:57 25 4
gpt4 key购买 nike

我正在尝试让 onbeforeunload 在我的页面上始终如一地工作,该页面具有用户正在填写的表单。我期待以下内容:

  • 当我点击另一个页面的链接时,它会提示用户
  • 当我刷新页面时,它会提示用户

我目前正在 Google Chrome 下进行测试,我现在正在使用以下内容 - 尽管我已经尝试了一些变体。

<script>

$(document).on('ready page:load', function () {
$(window).on('beforeunload', function() {
return "You should keep this page open.";
});
});

</script>

我有时会收到提示,但不是始终如一。我认为这可能与上面的代码和 turbolinks 有冲突。但一直未能找到修复方法来获得上述预期结果。

--- 更新:

这是我最终使用的代码。

<script data-turbolinks-eval="false">

$(document).ready(function() {
form_modified=0;

$('#report-form *').change(function(){
form_modified=1;
});

$("#report-form input[name='commit']").click(function() {
form_modified = 0;
});
});

$(document).on('page:before-change', function() {

if ($("#report-form").length > 0) {
if (form_modified==1) {
if (confirm("There are unsaved changes, click \"Cancel\" to remain on the page.")) {
// clicks "OK", nothing here means
} else {
// clicks "Cancel"
event.preventDefault();
}
}
}
});

</script>

此方法不适用于页面刷新或通过窗口“X”退出但是...

最佳答案

Turbolinks 为这种情况提供了 page:before-change 事件。

但是我不确定为什么要将第二个处理程序绑定(bind)到您的第一个处理程序中。当您点击 Turbolinks 链接时,window 对象不会改变。

关于javascript - 在 Rails 中,onbeforeunload 无法在 Chrome 浏览器中始终如一地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38551617/

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