Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想使链接仅在按下修改器时工作_Javascript_Keystroke - Fatal编程技术网

Javascript 我想使链接仅在按下修改器时工作

Javascript 我想使链接仅在按下修改器时工作,javascript,keystroke,Javascript,Keystroke,我试图使我的链接只有在按下Ctrl+Shift时才能工作,否则我希望它什么也不做。但我似乎无法让它发挥作用。有什么想法吗 <html> <head> <script type="text/javascript"> function keycheck(){ if (e.ctrlKey && e.shiftKey) {; document.getElementById("hello").onclick = funct

我试图使我的链接只有在按下Ctrl+Shift时才能工作,否则我希望它什么也不做。但我似乎无法让它发挥作用。有什么想法吗

<html> 
<head> 
<script type="text/javascript">
function keycheck(){
if (e.ctrlKey && e.shiftKey) {;          
    document.getElementById("hello").onclick = function() {
    location.href='http://www.mylink.com/';
    }
}
else {;
document.getElementById("hello").onclick = function() {
   location.href='#';
        }
    }
}
</script> 
</head> 
<body> 
<a href="#" onClick="keycheck()" id="hello">HELLO</a>
</body> 
</html>

函数keycheck(){
如果(e.ctrlKey&&e.shiftKey){;
document.getElementById(“hello”).onclick=function(){
location.href=http://www.mylink.com/';
}
}
否则{;
document.getElementById(“hello”).onclick=function(){
location.href='#';
}
}
}
两件事:

  • 如果不使用jQuery之类的库,您将从直接的onClick处理程序中获得不一致的结果。尤其是在访问事件对象时。如果您有意避免使用此类库,那么一定要进一步研究事件处理

  • 根据上面的警告,您的基本方法是执行与您相同的条件,但如果该条件为false,则只需取消事件行为(因此他们没有同时按下两个键)。当它为真时,你不必做任何事情,因为这是默认行为

  • 事件处理和取消是库极为有用的领域之一,因此,使用它并绑定一个
    on()
    click()
    处理程序,您可以从中获取事件。preventDefault()

  • 为什么??(好奇)
  • 您已经使用A标记触发了
    onclick
    。也不能从调用的函数
    onclick
    中单击
    onclick
  • 要引用
    e
    ,必须将其作为参数传入
  • 您不能将
    e
    作为参数传入,您要引用
    事件
  • 这很有效

    <script type="text/javascript">
    function foo() {
        console.log(event.ctrlKey);
        console.log(event.shiftKey);
    }
    </script>
    
    <a href="#" onclick="foo()">Foo

    但是在某些浏览器中,按SHIFT键并单击可在新的浏览器窗口中打开链接的URL。我想不出一个方法来阻止它,因为它是一个浏览器设置,不能由JavaScript控制。在这种情况下,当前窗口将前进到“foo.htm”,但链接“#”将在新的浏览器窗口中打开。

    您是否已经加载了可以帮助您的框架或库,或者您是否正在使用纯JS?例如,jQuery事件具有shiftKey属性。这永远不会起作用,因为您正在鼠标事件中检查键事件。你也试过打开控制台窗口吗?@DieterGoetelen有可能。处理程序会在onClick处理程序中签入的文档的每个keydown、keyup事件上更新
    isShfitKeyDown
    标志。谢谢!这很有效。我只是把onClick放在div上,而不是链接上。不过,我想再问一个问题,“ctrlKey”是否可以翻译成mac上的CMD键?因为我的朋友在他的mac电脑上,发誓它不工作,尽管它是给我的。re:command key-
    <script type="text/javascript">
    function foo() {
        if ( event.ctrlKey && event.shiftKey) {
            window.location.href="foo.htm";
        }
    }
    </script>
    
    <a href="#" onclick="foo()">Foo