Javascript 用“检测新选项卡的打开”;ctrl+;点击";

Javascript 用“检测新选项卡的打开”;ctrl+;点击";,javascript,tabs,click,Javascript,Tabs,Click,可能重复: 我有一些链接,当点击时,会执行一些javascript代码。就这样, <script> function myFunction(){ alert("Hello World!"); } </script> <a href="http://google.com" onclick="myFunction()">Click</a> 函数myFunction(){ 警报(“你好,世界

可能重复:

我有一些链接,当点击时,会执行一些javascript代码。就这样,

<script>
        function myFunction(){
            alert("Hello World!");
        }
</script>

<a href="http://google.com" onclick="myFunction()">Click</a>

函数myFunction(){
警报(“你好,世界!”);
}
当我执行“右键单击->在新选项卡中打开”时,它会将我引导到“google.com”,而不调用
myFunction()
。这正是我想要的

当我通过按链接“Ctrl+左键单击”在“新建”选项卡中打开链接时,问题就会出现。这样,它执行
myFunction()
,然后进入google.com


有没有办法解决这个问题?

检查
myFunction
以查看是否按下了修改器键

function myFunction(e) {
    // http://www.quirksmode.org/js/events_access.html
    var event = e || window.event;

    // https://developer.mozilla.org/en-US/docs/DOM/MouseEvent
    if (event.ctrlKey || event.metaKey) return;

    alert("Hello World!");
}
注意:这段代码可能并不适用于所有浏览器(这就是JavaScript库的用途)


onclick事件应包括作为事件处理程序一部分的按键数据。您只需修改myFunction,检查单击时ctrl键是否处于关闭状态,如果您希望添加event.preventDefault(),则绕过函数的其余部分;在Chrome和其他浏览器中,用鼠标中键单击链接会在“新建”选项卡中打开该链接。这可以通过检查
if(e.which==2)
@SavaB来检测。但这并不能解决问题。