区分在当前标签中打开的链接与新标签
我想要做的例子:在Facebook上,单击在当前标签中打开链接的链接将触发一些Javascript而不是打开链接。但是,在新选项卡中打开它(通过右键单击或按住Ctrl/Cmd)将打开链接而不调用任何Javascript。区分在当前标签中打开的链接与新标签
我想对我的链接做同样的操作(链接行为取决于目标)。我有onclick事件处理程序return false;
以避免打开链接;但是这会导致Ctrl +单击无法打开链接。我如何实现这一目标?
编辑:我不想链接强制在新窗口打开。 如果链接在新窗口中打开,我希望它像往常一样跟随href
。但是,IF链接在当前窗口中打开,而不是在当前窗口中的链接,我想要一些Javascript运行。
如果您在当前窗口中打开它,并在整个页面中打开它,如果您在新窗口中打开它,Facebook会打开弹出式“影院”中的图像。
请注意,捕获链接上的click
事件并使用preventDefault()
或return false
会导致Cmd + Click(在新选项卡中打开)失败。在任何情况下,本应不论如何链接打开工作 - 点击,回车键等
编辑2:看来hashchange
/HTML5 pushState的是去了解这个
你可以正确的方法设置锚点的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
}
});
请不要混淆作为导航源的* links *(它是'A'元素和'href'属性),而* anchors *(它们是具有'name'属性的'A'元素),它们是目的地。 'A'元素可以同时是*链接*和*锚*,但并不常见。 – RobG 2012-02-13 03:18:08
这取决于要求,但是我们应该让链接表现为链接。 – ShankarSangoli 2012-02-13 03:52:13
Cmd +点击无法打开链接当我这样做 – 2012-02-13 07:28:52
你想在新窗口中的链接总是打开? – ShankarSangoli 2012-02-13 01:23:29
你不能只将目标更改为所有锚上的'_blank'? – ZeroDivide 2012-02-13 01:27:17