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和其他浏览器中使用。
谢谢
Anurag
由于 JavaScript 处理点击事件。当您单击时,将调用以下代码:
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);
然后更新您的 ImageMenu 实例,使用以下 onOpen
更改:
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;
}
}
});
});
如果它的目标属性是_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被禁用/不支持时会破坏链接。
向别人学习:
<a onclick="window.open(this.href,'_blank');return false;" href="http://www.foracure.org.au">Some Other Site</a>
我理解这个意思。
<a onclick="window.open ('http://www.foracure.org.au', ''); return false" href="javascript:void(0);"></a>
祝你好运。
rel="noopener noreferrer"
,或者使用以下JavaScript代码:let link = window.open(url, "_blank");
link.opener = null;
我也遇到了同样的问题。
通过在href
之前添加target="_blank"
,问题得以解决。
<a target="_blank" href="http://www.google.com">Example</a>
更好的选择是
<a href="http://www.foracure.org.au" target="frameName" style="width: 105px;"></a>
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);
}
}
})
它停止事件的部分可能会覆盖点击锚点标签的默认行为,该行为将由浏览器处理。 我认为这样做的默认原因是“滑动门”应该在单击时关闭而不是链接到外部网站。 通常,导航菜单包含带有超链接的锚点标签,如果href未设置为#,则会重新加载页面,而不是打开或关闭“滑动门”,类似于汉堡菜单。
<a href="https://www.example.com/" target="_WORD" rel="noreferrer">
它将在一个新的浏览器标签中打开。
你可以使用几乎任何以下划线字符开头的单词。只是不要使用"_blank"
问题100%解决!