【问题标题】:ajax success responses and firefox popup blockerajax 成功响应和 firefox 弹出窗口拦截器
【发布时间】:2012-08-06 20:46:40
【问题描述】:

所以我理解 Firefox 弹出窗口阻止程序的方式是它会阻止用户未启动弹出窗口打开的弹出窗口(如果我错了,请纠正我)

例如,如果你有

window.open(url, name);

它会阻止弹出窗口,但如果你有

$('checkbox').change(function(){
  window.open(url, name);
});

它不会阻止弹出窗口,因为它取决于用户执行的操作(即更改复选框值)...

但是当我这样做的时候

$('checkbox').change(function(){
  $.ajax({
     url: someUrl,
     success : function(data){
       if(someCondition){
         window.open(someOtheUrl, name);
       }
     }
  });
});

Firefox 会尝试阻止这个 window.open 调用,尽管它仍然取决于用户执行的操作...

在用户操作中使用 ajax 时,有没有办法告诉 firefox 这个弹出窗口是合法的,并且不会让 firefox 阻止它?

【问题讨论】:

  • 我认为你对这个很感兴趣。但话又说回来......你为什么要使用弹出窗口?
  • 老实说,您应该尽快远离 window.open。你会比它的价值有更多的头痛。如果您需要显示另一个页面,为什么不直接打开一个带有 iFrame 的模式呢? window.open 可以完全被阻止。

标签: javascript jquery firefox popup window


【解决方案1】:

我同意这些以前的 cmets,您不需要使用弹出窗口。只需使用这样的 jquery-ui 模态 ....

 $('.delete').live('click', function(evt){
            var ref = $(this).attr('href');     
            $.get(ref, function(data){
            $('#modal_div').html(data);
            $(function() {
            $('#modal_div').dialog({
                autoOpen: true,
                show: "blind",
                hide: "fade",
                modal: true,
                width:301,
                buttons:
                {
                'Confirm Delete':function(){
                    // some action
                    },
                'Cancel':function(){
                    $(this).dialog('close');
                    }   
                }
            });
        });

    });
    evt.preventDefault();
});

});

所以这将完美运行,当然它比该死的弹出窗口更能满足用户!

注意代码中的一些东西可能对你没有用......我只是挑选了一些我写的javascript代码!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 2020-11-21
    相关资源
    最近更新 更多