jQuery:在新选项卡/窗口中打开链接时,不会调用click处理程序

时间:2010-04-05 11:26:39

标签: javascript jquery click onclick

我注意到当用户点击链接时,例如中间按钮或shift / ctrl + left按钮,不会调用附加到超链接的处理程序。

我已经看到了跟踪mousedown事件的解决方案,但我想要的是跟踪链接的确切事件。

有什么建议吗?感谢

4 个答案:

答案 0 :(得分:3)

mousedown / mouseup确实是获得中间按钮互动通知的唯一方式,因此在不干预mouseout事件的情况下检测到一个倒立的事件或多或少是你能做的最好。这不是很好。

我不会打扰,因为即使你陷入了这种可能性,也有许多其他的互动你无法接受。除了中键单击(可能不是所有浏览器/配置中的“在新选项卡中打开”;例如在IE6中,用户将打开滚动模式),用户可能会右键单击并在“新建”中打开“窗口”,或将链接拖到地址栏或新标签页,或其他各种特定于浏览器的操作以执行导航。

答案 1 :(得分:2)

如果链接在您的网站上,则在网页加载时跟踪链接,而不是在获取链接的网页上。如果该链接指向其他网站,则您需要使用重定向网址,以便您的网站可以对其进行跟踪(例如:http://yoursite.com/redirect.html?redirect=http://othersite.com)。

在重定向页面中,您可能会执行以下操作(如果您要使用javascript):

$(document).ready(function(){
  //insert your tracking code here...

  var redirect = getParameterByName('redirect');
  if(redirect != ''){
    window.location = redirect;
  }
});

//From http://stackoverflow.com/questions/901115/get-querystring-with-jquery/901144#901144
function getParameterByName( name ){
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );
    if( results == null )
    return "";
    else
    return results[1];
}

答案 2 :(得分:1)

你可以将“mousedown”'mouseup'事件与“event.which”结合使用。

示例:http://jsbin.com/ikahe/edit

答案 3 :(得分:0)

如何点击右键劫持......或者更确切地说是左键。

http://mislav.uniqpath.com/2011/03/click-hijack/