如何在JavaScript中模拟target =“_ blank”

当用户点击链接时,我需要更新数据库中的一个字段,然后在新窗口中打开请求的链接。 更新是没有问题的,但我不知道如何打开一个新的窗口,而不要求他们点击另一个超链接。

<body onLoad="document.getElementById('redirect').click"> <a href="http://www.mydomain.com?ReportID=1" id="redirect" target="_blank">Report</a> </body> 
 <script> window.open('http://www.example.com?ReportID=1', '_blank'); </script> 

第二个参数是可选的,是目标窗口的名称。

这可能有帮助

 var link = document.createElementNS("http://www.w3.org/1999/xhtml", "a"); link.href = 'http://www.google.com'; link.target = '_blank'; var event = new MouseEvent('click', { 'view': window, 'bubbles': false, 'cancelable': true }); link.dispatchEvent(event); 

我知道这是一个完成和整理的交易,但这是我用来解决我的应用程序中的问题。

 if (!e.target.hasAttribute("target")) { e.preventDefault(); e.target.setAttribute("target", "_blank"); e.target.click(); return; } 

基本上这里发生的是我运​​行检查,如果链接有target=_blank属性。 如果没有,它会阻止链接触发,将其设置为在新窗口中打开,然后以编程方式点击它。

你可以更进一步,跳过原始点击的停止(并使你的代码更加紧凑):

 if (!e.target.hasAttribute("target")) { e.target.setAttribute("target", "_blank"); } 

如果您使用jQuery来抽象添加属性跨浏览器的实现,您应该使用此而不是e.target.setAttribute("target", "_blank")

  jQuery(event.target).attr("target", "_blank") 

你可能需要修改它以适应你的确切使用情况,但这是我如何抓我自己的痒。

这里有一个演示它的行动,让你惹的祸。

(在jsfiddle的链接回到这个讨论..不需要一个新的标签:))

我个人更喜欢使用下面的代码,如果它是一个单一的链接。 否则,如果使用类似的代码创build一个函数,这可能是最好的。

 onclick="this.target='_blank';" 

我开始使用它来绕过W3C的XHTML严格testing。

这是我如何使用jQuery。 我想要在新窗口中打开每个链接的课程。

 $(function(){ $(".external").click(function(e) { e.preventDefault(); window.open(this.href); }); }); 

你可以从a标签中提取href:

 window.open(document.getElementById('redirect').href); 

这可能会帮助您打开所有页面链接

 $(".myClass").each( function(i,e){ window.open(e, '_blank'); } ); 

它会打开每个<a href="" class="myClass"></a>链接项目到另一个标签,就像你会点击每个标签。

您只需将其粘贴到浏览器控制台即可。 jQuery框架需要