带有target=“\u blank”的链接不会在Chrome的新选项卡中打开

在这个网站上,顶部的手风琴导航包含一个叫做“基础”的元素(截图)

此元素由HTML代码生成:

<a href=”http://www.foracure.org.au“target=“\u blank”style=“width:105px;”&lt/a>

但是,在Chrome中,当您单击此元素时,新网站不会在新选项卡中打开

你能告诉我为什么吗?多谢各位

因为JavaScript正在处理单击事件。单击时,将调用以下代码:

el.addEvent('click',函数(e){
如果(对象选项打开){
新事件(e.stop();
如果(obj.options.open==i){
obj.options.open=null;
obj.options.onClose(this.href,i);
}否则{
obj.options.open=i;
obj.options.onOpen(this.href,i);
}   
}       
})

onOpen手动更改位置

编辑:关于你的评论。。。
如果可以修改ImageMenu.js,则可以更新调用onClose传递a元素对象的脚本(this,而不是this.href

obj.options.onClose(这个,i);

然后使用以下onOpenchange更新ImageMenu实例:

window.addEvent('domready',function(){
var myMenu=新建图像菜单($$(“#图像菜单a”){
开放宽度:310,
边界:2,
onOpen:功能(e,i){
如果(e.target=='\u blank'){
window.open(e.href);
}否则{
位置=e.href;
}
}
});
});

这将检查元素的目标属性,查看它是否为\u blank,然后调用窗口。如果找到,则打开

如果您不想修改ImageMenu.js,另一个选项是修改链接,以便在onOpen处理程序中识别它们。比如说:

<a href="http://www.foracure.org.au/#_b=1" 目标=&quot_“空白”;风格=“;宽度:105px&引用&燃气轮机&lt/a>

然后,将您的onOpen呼叫更新为:

onOpen:function(e,i){
if(e.indexOf(“_b=1”)>-1){
窗口。打开(e);
}否则{
位置=e;
}
}

唯一的缺点是,用户看到散列在悬停状态

最后,如果您计划在一个新窗口中打开的链接数量较少,您可以创建一个地图并进行检查。比如:

var linksthatOpenInNewWindow={
'http://www.foracure.org.au': 1
};
onOpen:功能(e,i){
如果(链接在新窗口中打开[e]==1){
窗口。打开(e);
}否则{
位置=e
}
}

唯一的缺点是维护,这取决于链接的数量

其他人建议修改链接(使用#javascript:)并添加一个内联事件处理程序(onclick)——我不建议这样做,因为它在禁用/不支持JS时会断开链接

发表评论