javascript - 键码问题 - 几乎可以与 ctrlKey 一起使用

标签 javascript html events keycode

我编写了一个 JavaScript,当我点击一个链接时,它会在“内容”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),我希望页面能够打开。我该怎么做?

最佳答案

这里的问题是 Chrome 在触发任何 JS 事件之前覆盖了 Ctrl+click 作为新窗口快捷方式。如果您希望“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; 
} );

然后您可以通过检查全局变量 window.keyDownload_shift_test() 中采取行动。

关于javascript - 键码问题 - 几乎可以与 ctrlKey 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32293957/

相关文章:

javascript - onmousedown 调用鼠标捕获函数?

javascript - 如何让 Visual Studio Code 检查整个项目是否有错误?

javascript - D3.js 更新 onclick 其他元素

events - C++/CLI 事件是否有任何监听器?

javascript - 在对象之间创建监听器 javascript

javascript - 使用网格外部的控件通过远程数据绑定(bind)在 MVC 中过滤 Kendo UI 网格

javascript - 有谁知道在 Angular 2 应用程序中使用的简单日期选择器?

html - CSS:无法垂直移动我的按钮

javascript - 如何使文本框平行

events - 为什么 knockout 会在渲染后事件触发两次?