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 和其他浏览器中工作。
谢谢 阿努拉格
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>
祝你好运。
如何修复target=”_blank”链接:网页中的安全和性能问题这是由于安全问题造成的。
尝试将 rel=”noopener noreferrer”
添加到您的标签,或尝试以下 JavaScript:
let link = window.open(url, "_blank");
link.opener = null;
通过将
target="_blank"
放在
href
之前修复它
<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%解决!
<a onclick="window.open(this.href,'_blank');return false;" href="http://www.foracure.org.au">Some Other Site</a>
会起作用的
<a href="#" onClick={()=>window.open("https://...")}</a>