我只是在按下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>
答案 0 :(得分:0)
一些事情:
如果不使用jQuery这样的库,您将会从直接的onClick处理程序中获得不一致的结果。特别是在访问事件对象时。如果您故意避免使用此类库,请务必再研究处理事件。
根据上述警告,您的基本方法是执行相同的条件,但只是取消事件行为,如果它是假的(因此他们没有按下两个键)。当它是真的时你不必做任何事情因为这是默认行为。
事件处理和取消是库证明非常有用的领域之一,因此您可以使用一个并绑定on()
或click()
处理程序来获得更容易和更好的结果,您可以从中使用event.preventDefault( );
答案 1 :(得分:0)
onclick
。您也不能onclick
来自您调用的onclick
。e
,您必须将其作为参数传递。e
作为参数传递,您想引用event
这有效
<script type="text/javascript">
function foo() {
console.log(event.ctrlKey);
console.log(event.shiftKey);
}
</script>
<a href="#" onclick="foo()">Foo
在控制台中,如果您在点击链接时按下其中任何一个键,就会看到true
或false
。
为了让这个链接在按下时转到特定的URL:
<script type="text/javascript">
function foo() {
if ( event.ctrlKey && event.shiftKey) {
window.location.href="foo.htm";
}
}
</script>
<a href="#" onclick="foo()">Foo
HOWEVER ,在某些浏览器中,按SHIFT + click
会在新的浏览器窗口中打开链接的网址。我无法想到一种防止这种情况的方法,因为它是一种浏览器设置,无法通过JavaScript控制。在这种情况下会发生的是当前窗口将转到“foo.htm”,但链接“#”将在新的浏览器窗口中打开。