使用target =“_ blank”的表单提交会在ajax请求之后打开一个弹出窗口,而不是新选项卡

时间:2013-01-22 12:03:11

标签: javascript html ajax html5 web

我需要一些帮助...

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

当我提交表格时,目标=" _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);

谢谢!

1 个答案:

答案 0 :(得分:4)

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

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

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