如何解决对话框运行1秒并消失?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (26)

代码:

$(document).ready(function() {  

    // Append dialog pop-up modem to body of page
    $('body').append("<div id='confirmDialog' title='Confirm'><p><span class='ui-icon ui-icon-alert' style='float:left; margin:0 7px 20px 0;'></span>Are you sure you want to leave " + brandName + "? <br /> Your order will not be saved.</p></div>");

    // Create Dialog box
    $('#confirmDialog').dialog({
      autoOpen: false,
      modal: true,
      overlay: {
        backgroundColor: '#000',
        opacity: 0.5
      },
      buttons: {
        'I am sure': function() {
          var href = $(this).dialog('option', 'href', this.href);
          window.location.href = href;
        },
        'Complete my order': function() {
          $(this).dialog('close');
        }
      }
    });

    // Bind event to Before user leaves page with function parameter e
    $(window).bind('beforeunload', function(e) {    
        // Mozilla takes the
        var e = $('#confirmDialog').dialog('open').dialog('option', 'href', this.href);
        // For IE and Firefox prior to version 4
        if (e){
            $('#confirmDialog').dialog('open').dialog('option', 'href', this.href);
        }
        // For Safari
        e.$('#confirmDialog').dialog('open').dialog('option', 'href', this.href);
    }); 

    // unbind function if user clicks a link
    $('a').click(function(event) {
        $(window).unbind();
        //event.preventDefault();
        //$('#confirmDialog').dialog('option', 'href', this.href).dialog('open');
    });

    // unbind function if user submits a form
    $('form').submit(function() {
        $(window).unbind();
    });
});
提问于
用户回答回答于

beforeunload 利用内置在浏览器中的方法,你需要返回一个字符串,浏览器将显示该字符串并询问用户是否要离开页面。你不能使用自己的对话框(或jQueryUI模式对话框)来覆盖beforeunload

beforeunload 无法将用户重定向到其他页面。

$(window).on('beforeunload', function(){
  return 'Are you sure you want to leave?';
});

这会弹出一个提示框'Are you sure you want to leave?',提示用户是否要离开页面。

如果你想在页面卸载时运行一个函数,你可以使用$(window).unload(),注意它不能阻止页面卸载或重定向用户。

$(window).unload(function(){
  alert('Bye.');
});

演示:http://jsfiddle.net/3kvAC/241/

用户回答回答于

可以使用Microsoft推出的以下卸载方法来实现此目的。点击这里查看演示。

function closeIt()
  {
    return "Any string value here forces a dialog box to \n" + 
         "appear before closing the window.";
  }
  window.onbeforeunload = closeIt;

点击阅读Microsoft文档。

所属标签

可能回答问题的人

  • 天使的炫翼

    17 粉丝531 提问5 回答
  • 找虫虫

    0 粉丝0 提问5 回答
  • 人生的旅途

    10 粉丝484 提问4 回答
  • 骑牛看晨曦

    4 粉丝522 提问4 回答

扫码关注云+社区

领取腾讯云代金券