密钥代码问题 - 几乎与ctrlKey一起工作

时间:2015-08-30 06:38:23

标签: javascript html events keycode

我编写了一个JavaScript,当我点击链接时,它会打开“content”div中的特定页面。

HTML:

<li><a href='#' onclick="load_shift_test()">Soft Drinks</a></li>

JS:

function load_shift_test(){
    document.getElementById("content").innerHTML='<object type="text/php" data="mineralwater.php" ></object>';

这是有效的,但是,如果在点击链接时按下某个键,我需要在2页之间进行选择,所以我用这种方式重写了脚本:

function load_shift_test(){
    document.getElementById("content").innerHTML='<object type="text/php" data="mineralwater.php" ></object>';
 if (event.ctrlKey) 
    document.getElementById("content").innerHTML='<object type="text/php" data="mineralwateredit.php"></object>';

}

这也有效,但它也会在Chrome中打开一个新标签,我真的不喜欢它。

如果按下“e”键(不带ctrl),我会理想打开页面。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

此处的问题是Chrome在触发任何JS事件之前将Ctrl +单击作为新的窗口快捷键覆盖。如果您希望“e”成为修饰键,请创建一个跟踪键位置状态的jQuery事件。

window.keyDown = false; //Start with key down is false
$(document).keyup(function(event) { //On key up switch to false
  window.keyDown = (event.keyCode == 69) ? false : window.keyDown; 
} ).keydown(function(event) { //On key down switch to true
  window.keyDown = (event.keyCode == 69) ? true : window.keyDown; 
} );

然后,您可以通过检查全局变量load_shift_test()在<{1}}中执行操作。

答案 1 :(得分:0)

当用户对任何超链接执行ctrl + click时,正常的浏览器行为是在新标签中打开此超链接。 JavaScript代码无法阻止此行为。

但是,如果您想要停止打开新标签页,则需要从锚点链接中删除href属性,或者只使用其他HTML元素(例如div,span)。

这是JsFiddle Demo