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来检测。但这并不能解决问题。