Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 - Fatal编程技术网

是否可以通过javascript触发按键事件来键入文本?

是否可以通过javascript触发按键事件来键入文本?,javascript,Javascript,我想在光标所在的位置写入文本,我想一种方法是触发键盘事件。然而,不管我怎么做,它似乎并没有真正导致文本被编写 setTimeout(function(){ var evt = document.createEvent('Event'); evt.initEvent('keydown', true, true); evt.view = window; evt.altKey = false; evt.ctrlKey = false; evt.shiftKey = false; evt.metaKey

我想在光标所在的位置写入文本,我想一种方法是触发键盘事件。然而,不管我怎么做,它似乎并没有真正导致文本被编写

setTimeout(function(){
var evt = document.createEvent('Event');
evt.initEvent('keydown', true, true);
evt.view = window;
evt.altKey = false;
evt.ctrlKey = false;
evt.shiftKey = false;
evt.metaKey = false;
evt.keyCode = 0;
evt.charCode = 113;

document.activeElement.dispatchEvent(evt);
}, 2000);

这同样有效

document.execCommand('insertText', false, 'text to enter')

您可以编辑表单的文本值,对吗?否则,这不是不安全吗?就像它可以控制键盘一样?我不能编辑值,我需要能够通过js
evt键入。charCode
应该是一个整数,而不是一个字符串。你将如何触发它…你可以自动触发键盘事件,但必须从存在的节点调度。更好的解决方案是只使用函数(与侦听器上使用的函数相同)并在需要时调用它,除非需要专门使用事件对象。
function addText(text, target  = document.activeElement) {
    text = text || '';
    if (document.selection) {      // IE
      target.focus();
      var sel = document.selection.createRange();
      sel.text = text;
    } else if (this.selectionStart || this.selectionStart === 0) { // Others
      var startPos = target.selectionStart;
      var endPos = target.selectionEnd;
      target.value = target.value.substring(0, startPos) + text + target.value.substring(endPos, this.value.length);
      target.selectionStart = startPos + text.length;
      target.selectionEnd = startPos + text.length;
    } else {
      target.value += text;
    }
};
const dataTransfer = new DataTransfer();

function dispatchPaste(text, target = document.activeElement) {
    // this may be 'text/html' if it's required
    dataTransfer.setData('text/plain', text);
  
    target.dispatchEvent(
      new ClipboardEvent('paste', {
        clipboardData: dataTransfer,
  
        // need these for the event to reach Draft paste handler
        bubbles: true,
        cancelable: true
      })
    );
  
    // clear DataTransfer Data
    dataTransfer.clearData();
  }
document.execCommand('insertText', false, 'text to enter')