区分当前选项卡与新选项卡中打开的链接

时间:2012-02-13 01:21:05

标签: javascript javascript-events

我想做的例子:在Facebook上,点击链接在当前标签中打开它会触发一些Javascript而不是打开链接。但是,在新选项卡中打开它(通过右键单击或按住Ctrl / Cmd)将打开链接而不调用任何Javascript。

我想对我的链接做同样的事情(链接行为取决于目标)。我有onclick事件处理程序return false;以避免打开链接;但这会导致Ctrl +单击无法打开链接。我如何实现这一目标?

编辑:我不希望链接在新窗口中强行打开。 IF 在新窗口中打开了一个链接,我希望它像往常一样关注href。但是, IF 链接在当前窗口中打开,而不是跟随当前窗口中的链接,我想要运行一些Javascript。

如果您在当前窗口中打开图像,Facebook会在弹出式“剧院”中打开图像,如果您在新窗口中打开它,则会在整页中打开它。

请注意,在链接上捕获click事件并使用preventDefault()return false会导致Cmd + Click(在新标签页中打开)失败。无论如何,无论链接如何打开,这都应该有效 - 点击,回车键等

编辑2:似乎hashchange / HTML5 pushState是正确的方法

1 个答案:

答案 0 :(得分:3)

您可以将锚点的href设置为指向正确的网址。这样右键单击并在新选项卡或窗口中打开将正常工作。

使用jQuery将click事件处理程序绑定到锚点。

$('a').click(function(e){
   //Do whatever javascript operation you want.
   if(!e.ctrlKey){
         e.preventDefault();//Stop the page to navigate to the url set in href
   }
});

<强> Demo