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

Its not trying to open it as a popup but its blocked by the popup blocker cause open something with target:_blank in a new tab is only allowed when it is the direct result of an user input, like click or keydown.

You will get the same result when you try to open it in a setTimeout:

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