在this website上,顶级手风琴导航包含一个名为“基础”的元素:(screenshot)。
此元素由HTML代码生成:
<a href="http://www.foracure.org.au" target="_blank" style="width: 105px;"></a>
但是,在Chrome中,当您点击此元素时,新网站无法在新标签页中打开。
你能告诉我为什么吗?谢谢。
答案 0 :(得分:13)
因为JavaScript正在处理click事件。单击时,将调用以下代码:
el.addEvent('click', function(e){
if(obj.options.onOpen){
new Event(e).stop();
if(obj.options.open == i){
obj.options.open = null;
obj.options.onClose(this.href, i);
}else{
obj.options.open = i;
obj.options.onOpen(this.href, i);
}
}
})
onOpen
手动更改location
。
编辑:关于你的评论......
如果您可以修改ImageMenu.js,则可以更新调用onClose
的脚本以传递a
元素对象(this
,而不是this.href
)
obj.options.onClose(this, i);
然后使用以下onOpen
更改更新您的ImageMenu实例:
window.addEvent('domready', function(){
var myMenu = new ImageMenu($$('#imageMenu a'), {
openWidth: 310,
border: 2,
onOpen: function(e, i) {
if (e.target === '_blank') {
window.open(e.href);
} else {
location = e.href;
}
}
});
});
这将检查元素的target属性以查看它是否_blank
,然后调用window.open
(如果找到)。
如果您不想修改ImageMenu.js,则另一个选项是修改您的链接以在onOpen
处理程序中识别它们。说出类似的话:
<a href="http://www.foracure.org.au/#_b=1" target="_blank" style="width: 105px;"></a>
然后,将您的onOpen
电话更新为:
onOpen: function(e, i) {
if (e.indexOf('_b=1') > -1) {
window.open(e);
} else {
location = e;
}
}
唯一的缺点是用户在悬停时看到哈希值。
最后,如果您计划在新窗口中打开的链接数量很少,您可以创建一个地图并对其进行检查。类似的东西:
var linksThatOpenInANewWindow = {
'http://www.foracure.org.au': 1
};
onOpen: function(e, i) {
if (linksThatOpenInANewWindow[e] === 1) {
window.open(e);
} else {
location = e
}
}
唯一的缺点是维护,取决于链接的数量....
其他人建议修改链接(使用#
或javascript:
)并添加内联事件处理程序(onclick
) - 我根本不建议这样做JS被禁用/不受支持时的链接。
答案 1 :(得分:10)
Replace
<a href="http://www.foracure.org.au" target="_blank"></a>
with
<a href="#" onclick='window.open("http://www.foracure.org.au");return false;'></a>
在您的代码中,可以在Chrome和其他浏览器中使用。
由于 阿努拉格
答案 2 :(得分:4)
由于某种原因,它不起作用,所以我们可以通过另一种方式来做到这一点
只需删除该行并添加: -
<a onclick="window.open ('http://www.foracure.org.au', ''); return false" href="javascript:void(0);"></a>
祝你好运。
答案 3 :(得分:4)
向另一个人学习:
<a onclick="window.open(this.href,'_blank');return false;" href="http://www.foracure.org.au">Some Other Site</a>
这对我来说很有意义。
答案 4 :(得分:1)
您对target属性的语法是正确的,但浏览器不需要遵守它。他们可能会将其解释为在新选项卡而不是新窗口中打开目标,或者他们可能完全忽略该属性。浏览器具有此类问题的设置。此外,浏览器插件可以防止打开新窗口(通常设计用于防止恼人的广告)。
作为作者,你几乎无能为力。您可以考虑使用JavaScript打开一个新窗口,参见到目标的接受答案=&#34; _blank&#34;是不是在firefox中工作?但是浏览器可能更不愿意让页面打开新窗口而不是通过目标。
答案 5 :(得分:1)
根据这篇文章 How to fix target=”_blank” links: a security and performance issue in web pages 这是由于安全问题。
尝试将 rel=”noopener noreferrer”
添加到您的标签中,或尝试使用此 JavaScript:
let link = window.open(url, "_blank");
link.opener = null;
答案 6 :(得分:-2)
如果您使用React,这应该有效:
<a href="#" onClick={()=>window.open("https://...")}</a>
&#13;
答案 7 :(得分:-2)
最简单的答案 只需将target =“ _ blank”放在href
前面<a target="_blank" href="http://www.foracure.org.au" style="width: 105px;"></a>
它将起作用