9

我需要一些帮助...

任何人都知道如何解决这个问题?: http: //jsfiddle.net/Q3BfC/5/

当我默认提交带有 target="_blank" 的表单时,会打开一个新选项卡。但是如果在 ajax 请求之后尝试这样做,表单会打开一个弹出窗口。

(function($) {
    jQuery(document).ready(function() {

        var launch = function(p_url) {
            var form = $('<form />').hide();
            form.attr({'action': p_url, 'target': '_blank'});
            form.appendTo(document.body);
            form.submit();
            form.remove();
            delete form;
        };

        $('#normal').on('click', function() {
            launch('http://www.google.com');
        });

        $('#ajax').on('click', function() {
            $.ajax({
                type: 'POST',
                url: '#',
                traditional: true,
                success: function() {
                    launch('http://www.google.com');
                }
            });
        });

    });
})(jQuery);

谢谢!

4

1 回答 1

4

它不是试图将其作为弹出窗口打开,但它被弹出窗口阻止程序阻止,因为target:_blank只有当它是用户输入的直接结果时才允许在新选项卡中打开某些内容,例如单击或 keydown。

当您尝试在 setTimeout 中打开它时,您将得到相同的结果:

setTimeout(function() {launch('http://www.google.com')}, 10);
于 2013-01-22T12:43:32.103 回答