Javascript JS函数无法从KeyCode工作/如何使用键盘键调用此JS函数

Javascript JS函数无法从KeyCode工作/如何使用键盘键调用此JS函数,javascript,html,Javascript,Html,下面是一个简单的脚本函数getSelectedText(),它正在使用按钮单击。这意味着,当我们选择任何文本并单击按钮时,函数将成功创建一个新的NEWCLASSdiv。但是现在我想使用快捷键,比如CTRL+W,在NEWCLASSdiv中获取所选文本 我试过这个代码,但不起作用。请检查一下,让我知道我犯了什么错误 var input = document.getElementsByTagName("body")[0]; input.addEventListener("

下面是一个简单的脚本函数
getSelectedText()
,它正在使用
按钮
单击。这意味着,当我们选择任何文本并单击按钮时,函数将成功创建一个新的
NEWCLASS
div。但是现在我想使用快捷键,比如CTRL+W,在
NEWCLASS
div中获取所选文本

我试过这个代码,但不起作用。请检查一下,让我知道我犯了什么错误

var input = document.getElementsByTagName("body")[0];
input.addEventListener("keyup", function(event) {
  if (event.keyCode === 37) {
   event.preventDefault();
   document.getElementById("myBtn").click();
  }
});
我的代码:

//获取所选文本的函数
函数getSelectedText(){
var selectedText='';
//#####使用变量(nw)####创建新元素//
var nw=document.createElement(“div”);//元素的标记
nw.className=“NEWCLASS”;//元素的类名
//一些实用的风格
//window.getSelection
if(window.getSelection){
selectedText=window.getSelection();
}
//document.getSelection
else if(document.getSelection){
selectedText=document.getSelection();
}
//文件选择
else if(文档选择){
选定文本=
document.selection.createRange().text;
}否则返回;
//#########获取附加到正文###的所选文本//
nw.innerHTML=selectedText;
document.getElementsByClassName('mainttitle')[0].prepend(nw);//将元素追加到正文中
}
按钮
选择此句子的任何部分并按下按钮。选择此句子的任何部分并按下按钮。选择此句子的任何部分并按下按钮


按住ctrl键和w键将关闭chrome浏览器,因此我使用了“Z”键,您可以用任何您想要的代码替换键代码

const keySelected=new Set();
document.addEventListener('keydown',(e)=>{
添加(e.which);
if(keySelected.has(17)和&keySelected.has(90)){
getSelectedText();
}
});
文件。添加的文件列表器('keyup',(e)=>{
删除(e.which);
});
/*
//jquery代码,如果有人想要的话
$(文档).ready(函数(){
const keySelected=新集合();
$(文档).keydown(函数(e){
添加(e.which);
if(keySelected.has(17)和&keySelected.has(90)){
getSelectedText()
}
});
$(文档).keyup(函数(e){
删除(e.which);
});
});
*/
//函数获取所选文本
函数getSelectedText(){
var selectedText='';
//#####使用变量(nw)####创建新元素//
var nw=document.createElement(“div”);//元素的标记
nw.className=“NEWCLASS”;//元素的类名
//一些实用的风格
//window.getSelection
if(window.getSelection){
selectedText=window.getSelection();
}
//document.getSelection
else if(document.getSelection){
selectedText=document.getSelection();
}
//文件选择
else if(文档选择){
选定文本=
document.selection.createRange().text;
}否则返回;
//#########获取附加到正文###的所选文本//
nw.innerHTML=selectedText;
document.getElementsByClassName('mainttitle')[0].prepend(nw);//将元素追加到正文中
}

按钮

选择这个句子的任何部分
然后按下按钮。选择这个句子的任何部分
然后按下按钮。选择这个句子的任何部分
然后按下按钮

Ctrl+W不是一个很好的选择,因为在Windows上,它是关闭当前窗口或文档的常用快捷键,因此您的脚本甚至不会获得key事件

但我将选择Ctrl+Y

您不应该使用不推荐使用的属性,也不应该使用另一个答案建议的属性,请注意MDN文档中的红色通知

这更容易与财产。您可以使用该属性了解控制键是否已关闭

我将使用keydown而不是keyup事件,因为您可以通过调用来取消该键的任何默认效果

document.addEventListener(“向下键”,“事件)=>{
如果(event.ctrlKey&&event.key==“y”){
event.preventDefault();
getSelectedText();
}
});
//您的原始代码:
函数getSelectedText(){
var selectedText='';
var nw=document.createElement(“div”);//元素的标记
nw.className=“NEWCLASS”;//元素的类名
if(window.getSelection){
selectedText=window.getSelection();
}else if(document.getSelection){
selectedText=document.getSelection();
}else if(文档选择){
selectedText=document.selection.createRange().text;
}否则返回;
nw.innerHTML=selectedText;
document.getElementsByClassName('mainttitle')[0].prepend(nw);
}
按钮
选择此句子的任何部分,然后按按钮或输入Ctrl+Y。
选择此句子的任何部分,然后按按钮或输入Ctrl+Y。
选择此句子的任何部分,然后按按钮或输入Ctrl+Y。


您不需要调用按钮上的事件,您应该能够检测到所需按键的按下并调用该功能,如:

document.addEventListener('keydown', (e) => {
    if (e.ctrlKey && e.code === 'keyW')    {
        getSelectedText();
    }
});
这应该行得通

var input = document.getElementsByTagName("body")[0];
input.keypress("w", function(event) {
  if (event.ctrlKey) {
   event.preventDefault();
   document.getElementById("myBtn").click();
  }
});

英雄联盟我上当了。不小心关上了窗户大多数浏览器都有
,这是不推荐使用的。你不应该使用它。我注意到你从这个答案中删除了接受标记。有什么问题吗?