Javascript 中键单击一个<;a>;使用eval()时,chrome中的标记不起作用

Javascript 中键单击一个<;a>;使用eval()时,chrome中的标记不起作用,javascript,jquery,Javascript,Jquery,我的菜单结构如下 <ul> <li> <a href="#" rel="profile">Profile</a> </li> <li> <a href="#" rel="settings">Settings</a> </li> </ul> 这适用于所有浏览器,但当我在Chrome中用鼠标中键单击时,该功能将在同一窗口中重定向,而对于其他浏览器,

我的菜单结构如下

<ul>
  <li>
    <a href="#" rel="profile">Profile</a>
  </li>
  <li>
    <a href="#" rel="settings">Settings</a>
  </li>
</ul>
这适用于所有浏览器,但当我在Chrome中用鼠标中键单击时,该功能将在同一窗口中重定向,而对于其他浏览器,它将在新选项卡中打开


当我点击鼠标中键时,如何让它在Chrome的新选项卡中打开?

首先看看事件处理程序是否被调用。若单击鼠标中键并没有引发事件,那个么它可能是浏览器或jQuery中的错误。我怀疑window.open方法在Chrome上的工作方式略有不同

要在链接的选项卡中打开新页面,可以指定target=''u blank'或target='tab',而不是使用JS中的opening。我的意思是,您可以更改锚标记本身,而不是调用window.open

$('a').each(
    function(){
        // some condition evaluation
    $(this).attr('href',destURL);
    $(this).attr('target','_blank');
});
通过这样做,您可以简化代码,并且可以调试和查看element inspector中的所有内容


好处是,如果您不指定目标,用户可以在任何他/她想要的地方打开链接。

检查您是否被Chrome 28中键点击错误击中。它在Chrome 29中得到了修复,现在正处于测试阶段。

像这样使用
eval
不是一个好主意<代码>窗口[this.rel].init()可能会起作用。另外,什么是
settings.init
?很少需要eval。
try{$(this).attr('rel').init();}catch(e){console.log(“不能调用attrrelinit:+e);}
?@Paul:
$(this).attr('rel')
返回一个字符串,该字符串没有
init
方法。@AkashKava:As-for
eval
,如果您将复杂的逻辑放入锚定标记的
rel
属性中,然后对其求值,那么您就错了。@AkashKava:如果您没有发现从
rel
属性(甚至不是有效的HTML)中提取的JavaScript代码有任何错误,讨论这个都没有意义,没错。问题是他们没有使用链接。幸运的是,它可以在其他浏览器中工作。我认为这是一个bug或不同浏览器的不同行为。OpenMethod,就像它一直以来一样,W3C正在休眠,浏览器添加了更多冲突的内容,我们的工作一天比一天更糟。
tab
不是
target
属性的有效值。您可能想改用
\u blank
。@Blender它是有效的。然而,只有在打开一个名为
tab
@AkashKava的窗口时,它才会起作用。我可能做错了什么,但我觉得我的工作越来越好。浏览器之间总是存在差异。
$('a').each(
    function(){
        // some condition evaluation
    $(this).attr('href',destURL);
    $(this).attr('target','_blank');
});