在这个网站上,顶部的手风琴导航包含一个叫做“基础”的元素(截图)
此元素由HTML代码生成:
<;a href=”http://www.foracure.org.au“target=“\u blank”style=“width:105px;”</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" 目标="_“空白”;风格=“;宽度:105px&引用&燃气轮机</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时会断开链接