使用target="_blank"的表单提交,在ajax请求后弹出一个弹窗而不是新标签页。

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);

谢谢!


你想用这个做什么,看起来像是一个可怕的黑客。 - Ja͢ck
这件事有任何更新吗?我们也遇到了同样的问题。 - Hudson Atwell
1个回答

4

这并不是试图将其作为弹出窗口打开,但由于在新标签页中使用target:_blank打开某些内容只有在它是用户输入的直接结果(例如点击或按键)时才允许,因此它被弹出窗口拦截器阻止了。

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

setTimeout(function() {launch('http://www.google.com')}, 10);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接