off() 在 Firefox 中不起作用,但在 Chrome 中工作


off() not working in firefox but working in chrome

我正在使用beforeonload函数,但我希望当用户提交表单时beforeunload不应该工作。这是我的代码,它在Chrome中运行良好,但在Firefox中则不行。

window.form_submitted = ''; 
jQuery(document).ready(function() {
    jQuery(window).on('beforeunload', function() {
        if (form_submitted == '') {
            return "Are you sure to leave that page";
        }
    });
});
jQuery('#form').on('submit', function (e) {
    e.preventDefault();
    jQuery(window).off('beforeunload');
    form_submitted = 1;
    site_redirect(resp.payment_url);
} 
return false;
});

您有几个语法问题,并且必须将submit块放在 DOMReady 处理程序中,否则 JS 将尝试将事件绑定到 DOM 中尚不存在的元素。另请注意,您可以在表单提交时取消绑定 beforeunload 事件时删除全局标志变量。试试这个:

jQuery(document).ready(function($) {
    $(window).on('beforeunload', function() {
        return "Are you sure to leave that page";
    });
    $('#form').on('submit', function (e) {
        e.preventDefault();
        $(window).off('beforeunload');
        site_redirect(resp.payment_url);
    }); 
});

另请注意,通过在提交表单时执行重定向(假设这是site_redirect函数正在执行的操作),则表单的内容将丢失。

相关文章: