window.open与目标'_blank'打开一个新的浏览器窗口

时间:2014-06-18 09:59:40

标签: javascript jquery browser hyperlink

我正在尝试在新的浏览器标签中打开一个链接(而不是在新窗口中)。

当我在页面上放置链接时

<a href="#" onclick="window.open('http://www.google.com', '_blank');"> Click Here</a>

当用户点击链接时,它将在新的浏览器标签中打开谷歌。那没关系

BUT

$.ajax({
   type: "POST",
   url: someURL,
   data: {somedata},
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function (response) {
    window.open('http://www.google.com', '_blank'); // it's always open in new browser window and I want a new tab
   },
   failure: function (response) {
      alert(response);
      return;
   }
});  

当我在AJAX Web方法中尝试这个时,它总是在新的浏览器窗口中打开它;但我想在新标签中打开它,因为它适用于上面的例子。

我知道这是浏览器特定的功能但不知何故我需要完成此操作。

3 个答案:

答案 0 :(得分:1)

试试这个

onclick="window.open('http://www.google.com', '_self');

答案 1 :(得分:0)

它是浏览器特定的,我在mozilla上测试它并且工作正常,但在Chrome上它在新的浏览器窗口中打开。您可以向铬制造商建议或致电ajax同步。

使用async:false即可。

注意:在IE中,打开新的浏览器窗口是默认行为。用户需要明确设置设置

答案 2 :(得分:0)

你必须在这里玩一个小技巧。 您必须创建一个隐藏的链接标记,其中包含target =&#39; _blank&#39;并在ajax成功时设置此链接标记的href,然后触发此链接标记的单击,例如。

HTML代码

<a href="#" id="hidden_link" target="_blank">hidden</a>

Js代码

$.ajax({
  type: "POST",
  url: someURL,
  data: {somedata},
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (response) {
   var hiddenLink = $("hidden_link");
   hiddenLink.attr("href",response.href);
   hiddenLink[0].click();  
  },
  failure: function (response) {
    alert(response);
    return;
  }
 }); 

以上是代码

的工作fiddle