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

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

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

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

您可以从标记中提取 href:

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

我知道这是一个已经解决的问题,但这里是我用来解决我的应用程序中的问题。

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 中的链接返回到这个讨论. . no need a new tab:)

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

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

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

这就是我使用 jQuery 的方法。我有一个类为每个链接,我想要在新窗口中打开。

$(function(){


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

这个可能会有帮助

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);

这可能对你的 打开所有页面链接有帮助:

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

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

您只需要将它粘贴到浏览器控制台

我在我的网站上就是这么做的。一些按钮调用一个 javascript 函数,该函数总是为每个新的网页打开一个新的标签页。

<button type="button" onclick="newTab('http://google.com')">search</button>
<button type="button" onclick="newTab('http://amazon.com')">buy</button>
<button type="button" onclick="newTab('http://gmail.com')">read</button>
<script>
function newTab(url) {
window.open(url, '_blank');
}
</script>

Js 的变化 (href =’#’target =’_ black’)