【问题标题】:Prevent 'Confirm Navigation' alert with window.location.href使用 window.location.href 防止“确认导航”警报
【发布时间】:2016-11-30 20:28:28
【问题描述】:

我有一个按钮:

<button type="button" class="btn btn-primary mt15 send-emails" name="SendEmails" value="true">Send Emails</button>

还有一个方法:

$('.send-emails').click(function (e) {
        // build data and other stuff
        $.post('/leads/sendemails', data, function (data, status, xhr) {
            alert('Emails have successfully been queued for sending.');
            window.onbeforeunload = null;
            window.location.href = '/Leads/Lead/' +  @Model.LeadID;
    }, 'json');
});

即使使用window.onbeforeunload = null;,我仍然会收到弹出警告:

如何防止这种情况发生?

【问题讨论】:

  • 请试试这个:$(window).unbind();
  • 成功了!将其列为答案?

标签: javascript jquery navigation


【解决方案1】:

解决方法如下:

$(window).unbind();

这将在使用location.href 将浏览器重定向到新页面之前删除onbeforeunload 事件。

【讨论】:

  • 这不能解决我的问题。 :( 这个问题还有其他解决方案吗??
  • 起初这对我有用,后来就没有用了。我通过设置onbeforeundload = function(){} 解决了这个问题
  • @Femtosecond,您可以为此添加答案以帮助其他人。
【解决方案2】:

在重定向到这样的页面之前使用全局变量进行检查。有一个字符串变量来保存href,您需要在语句之前对其进行重定向和重定向

(function($){
    var dontSubmit = false,
        $form = $('form#my-form');

    // Prevent the trigger a false submission on link click
    window.addEventListener("beforeunload", function (e) {
        dontSubmit = true;
        $form.trigger('submit');
    });

    $form.on('submit', function(event){
        if (dontSubmit) {
            event.preventDefault();
            return;
        }

        // Continue on as normal
    });
})(jQuery);

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 2013-02-21
    相关资源
    最近更新 更多