function sleep(ms:number) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

 async function simulateHumanInput(target, value, interval = 80) {
  target.focus();
  target.innerText = "";

  for (let i = 0; i < value.length; i++) {
    const char = value[i];
    target.innerText += char;

    // 生成输入事件
    const inputEvent = new InputEvent("input", {
      bubbles: true,
      data: char,
      inputType: "insertText"
    });
    target.dispatchEvent(inputEvent);

    // 键盘事件
    const keyEventDown = new KeyboardEvent("keydown", { key: char, bubbles: true });
    const keyEventUp = new KeyboardEvent("keyup", { key: char, bubbles: true });
    target.dispatchEvent(keyEventDown);
    target.dispatchEvent(keyEventUp);

    await sleep(interval + Math.random() * 30);
  }

  target.blur();
}

标签: js, chrome, 模拟, 模拟用户输入

添加新评论