【问题标题】:Form submit with target="_blank" opens a popup window after ajax request instead new tab使用 target="_blank" 提交的表单在 ajax 请求后打开一个弹出窗口,而不是新选项卡
【发布时间】:2013-01-05 15:47:41
【问题描述】:

我需要一些帮助...

有人知道怎么解决吗?: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);

谢谢!

【问题讨论】:

  • 你想用这个实现什么,它看起来像一个可怕的黑客。
  • 这有什么更新吗?我们遇到了同样的问题。

标签: javascript ajax html web


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2014-09-20
    • 2013-12-06
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多