【发布时间】:2013-04-11 08:57:26
【问题描述】:
我希望我的链接看起来像合法的 url,但行为不同,比如在点击事件发生时转到我定义的一些跟踪 url。 当我用鼠标左键单击链接时,我可以用 .click() 处理程序捕获它并将 href 更改为其他内容。当我右键单击时,它不会被 .click() 捕获,但我可以使用 .mousedown() 和 .mouseup(),这只是我问题的部分解决方案。
问题是,我想确保当某些用户右键单击链接时,链接看起来仍然合法,但是当他选择在新选项卡中打开链接时,我会捕获该事件并更改 href .最后,当链接上发生实际的点击事件时,href 会变回原来的。他们实际去的网址,做了一些事情并将他们重定向到真正的网址,但它发生得非常快。所以这个功能的目标是欺骗用户并跟踪他们的点击。 Facebook 做到了,但他们如何处理右键点击和“在新标签页中打开”?
好吧,我猜如果没有一些代码就无法到达任何地方.. 我现在有一些代码:
link = $(selectorName);
var original_link = link.attr("href");
link.click(function(){
link.attr("href", "/track_and_redirect");
}).mousedown(function(event) {
switch (event.which) {
case 3:
//alert('Right mouse button pressed');
link.attr("href", "/track_and_redirect");
break;
default:
}
}).mouseleave(function(){
link.attr("href", original_link);
});
目前当你右键点击链接时,新的url会显示在浏览器角落,我该如何绕过呢?
【问题讨论】:
-
你是说你想发送给他们的实际链接不是“合法的”吗?
-
“我希望我的链接看起来像合法的 url,但行为不同,比如转到我定义的一些跟踪 url” 不要。只是不要。做谷歌在搜索结果页面上所做的事情:让链接带你到一个重定向到目标的跟踪页面。 (甚至他们所做的也有点邪恶,因为当您悬停链接时,您在状态栏中看到的并不是您要访问的真正链接,它们会覆盖状态文本。)
-
为什么投反对票?有什么不清楚的吗?没有研究努力?无需情绪化。 @musefan:它们将被定向到跟踪网址,但链接本身需要看起来像是直接指向目标网址。
-
其实我查了谷歌,如果你搜索一些东西并将鼠标悬停在链接上,你会看到目标网址,尝试右键单击它而不做任何事情,再次悬停链接,网址是改变了。因此,在发生右键单击后,他们不会将其更改回原始状态。这就是我现在所拥有的,但这不是理想的解决方案。
-
@IndrekR:FWIW,我同意你的反对意见。否决票不是因为不同意某人的意图。但人就是人。 :-)