确定点击链接是否意味着打开新窗口或选项卡

Rem*_*emo 6 javascript tabs click hyperlink target

大多数现代浏览器在新选项卡或新窗口中支持命令ctrl+clickcommand+click类似于打开链接.

在应用程序中,我希望链接在单击时被禁用.但只是,如果目标是同一个窗口(例如,如果它在新选项卡中打开,我不希望链接被禁用,因为再次单击它是合理的).

我做了一些尝试并调试了在点击时创建的事件对象 - 但我找不到有关目标是新选项卡还是新窗口的任何信息.

已知的解决方法:当然可以在单击特定链接时检查是否按下了某个键,这很简单 - 但由于这些命令因浏览器和操作系统而异,因此需要定义复杂的映射和谁能确切知道用​​户配置的内容等等.

有没有可靠的方法来确定是否应该在新标签或窗口中打开位置?

Pio*_*oul 5

这里有一个工作示例:http : //jsfiddle.net/pioul/eCuNU/4/

仅当链接将根据target="_blank"属性在新选项卡/窗口中打开时,此脚本才允许单击链接。

HTML:

<a href="http://google.fr" target="_blank">new window</a>
<a href="http://google.fr" target="_self">same window 1</a>
<a href="http://google.fr" target="">same window 2</a>
Run Code Online (Sandbox Code Playgroud)

jQuery:

$("a").bind("click", function(e){
    if($(this).attr("target") != "_blank"){
        e.preventDefault();
    }
});
Run Code Online (Sandbox Code Playgroud)

编辑:

您可以像这样考虑 ctrl+clicks:

$("a").bind("click", function(e){
    if($(this).attr("target") != "_blank"){
        if(!e.ctrlKey){
            e.preventDefault();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)