2013-01-22 30 views
9

我在这里需要一些帮助......形成目标提交=“_空白”打开Ajax请求,而不是新的标签后,弹出一个窗口

任何人知道如何解决这个问题?: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); 

谢谢!

+0

什么是你想实现这一点,它看起来像一个可怕的黑客:

当您尝试在setTimeout的打开它你会得到相同的结果。 –

+0

对此有何更新?我们遇到同样的问题。 –

回答

4

它不会试图打开它作为弹出窗口,但它被弹出窗口阻止程序阻止导致在新选项卡中打开target:_blank,只有当它是用户输入的直接结果(如click或keydown)时才允许。

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