0

所以我理解 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 阻止它?

4

1 回答 1

0

我同意这些先前的评论,您不需要使用弹出窗口。只需使用这样的 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代码!

于 2012-08-20T04:56:57.450 回答