中间点击<a> tag in chrome not working when using eval()</a>

时间:2013-07-13 05:25:12

标签: javascript jquery

我的菜单结构如下

<ul>
  <li>
    <a href="#" rel="profile">Profile</a>
  </li>
  <li>
    <a href="#" rel="settings">Settings</a>
  </li>
</ul>

每当我点击标签时,我的函数都会获取rel属性,并在其上运行eval()函数,即

$('ul li a').die('click');
$(document).on('click','ul li a',function(event){

     eval($(this).attr('rel'))['init']();// open the settings.init() function

});

这适用于所有浏览器,但是当我在Chrome中用鼠标中间点击时,该功能会在同一窗口中重定向,而对于其他浏览器,它会在新标签页中打开

当我点击中间点时,如何让它在Chrome的新标签页中打开?

2 个答案:

答案 0 :(得分:2)

首先查看是否调用了事件处理程序。如果中间点击没有引发事件,那么它可能是浏览器或jQuery中的错误。我怀疑window.open方法在Chrome上的工作方式略有不同。

要在链接的标签页中打开新页面,您可以指定target =&#39; _blank&#39;或target =&#39; tab&#39;而不是在JS中使用开放。我的意思是,你可以改变锚标签而不是调用window.open。

$('a').each(
    function(){
        // some condition evaluation
    $(this).attr('href',destURL);
    $(this).attr('target','_blank');
});

通过这样做,您可以简化代码,并且可以调试并查看元素检查器中的所有内容。

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

答案 1 :(得分:0)

检查您是否未点击Chrome 28中间点击错误https://code.google.com/p/chromium/issues/detail?id=236835。它已在Chrome 29中修复,现在处于测试阶段。