以编程方式发送键盘事件不会将它们分派到输入中

2023-12-02

我将以编程方式生成的键盘事件发送到文档。我希望当前聚焦的输入元素能够显示它们,但事实并非如此。事件是使用以下函数从字符串生成的:

const simulateKeyPress = keys => {
  keys.split('').forEach(theKey => {
    const e = new window.KeyboardEvent('keypress', {
      bubbles: true,
      key: theKey,
      keyCode: theKey.charCodeAt(0),
      charCode: theKey.charCodeAt(0),
    })
    document.dispatchEvent(e)
  })
}

如果我将 EventListener 添加到文档中,它将接收所有事件。他们的isTrusted标志设置为 false 但是,这可能是问题吗?


它不能以编程方式从网站完成。像你说的isTrustedboolean 为 false 不会正确触发按键(自 Chrome 53 起):https://developer.mozilla.org/en/docs/Web/API/Event/isTrusted

我试图在这里解决这个问题:https://codepen.io/zvona/pen/LjNEyr?editors=1010

实际上唯一的区别是将事件分派给activeElement, like: document.activeElement.dispatchEvent(e);。此外,如果您能够挂钩输入的事件,则可以添加事件侦听器来完成这项工作:

input.addEventListener('keypress', (evt) => {
  evt.target.value += evt.key;
});

但正如前面提到的,这不是可信事件。但是,这可以通过浏览器扩展来完成(请参阅:如何在 Chrome 扩展程序中使用给定的字符/键码初始化键盘事件?)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以编程方式发送键盘事件不会将它们分派到输入中 的相关文章

  • 跨域iframe自动调整大小

    我正在使用 iframe 和 javascript 制作一个 Web 小部件 我想让我的 iframe 能够根据其内容 从其他域加载 调整大小 我做了一些搜索 包括在 Stack Overflow 上 我找到了几个主题 但我找不到关于这个问
  • Javascript 函数与 php 一样吗?

    我在网站上使用 WebIM 提供聊天支持 我希望能够在客户端启动聊天会话时设置一个计时器 如果操作员 技术人员在 x 秒内没有响应 我希望页面重定向到客户端可以留言的另一个页面 有点像 请稍等 我们尝试联系您 这样 如果所有技术人员都太忙或
  • 为什么 Eclipse 有时会对 JavaScript 中的数组数组发出警告?

    在 Eclipse 中 以下 JavaScript 行 var a1 1 2 3 4 生成警告 Type mismatch cannot convert from Number to any Type mismatch cannot con
  • 如何避免在 Rust 中使用标准输入换行

    我有这个代码 fn main let mut stdin io stdin let input mut String new loop input clear print Your age stdin read line input pri
  • 在 Javascript 中,有什么方法可以知道从哪个主机脚本加载?

    在javascript中 作为从某个主机加载的脚本 有什么方法可以知道我是从哪个服务器 主机加载的 我需要向该主机发出额外的 ajax 请求 并且更愿意动态地找出主机 因此 如果您在页面上包含 javascript 文件 当该 javasc
  • 如何删除事件监听器?

    下面是我的事件监听器代码 window addEventListener beforeunload function e if sessionStorage token abide call api 如果我想删除这个事件监听器 我该怎么办
  • 如何检测不渲染 .png 透明的浏览器

    我有这段代码可以根据一周中的某一天渲染图像 但在 IE6 及更低版本以及可能其他一些浏览器中 它不会呈现 png 不透明度 所以我想稍微改变一下 这样它就会检测到不渲染 alpha 透明度的浏览器 并告诉他们加载这个图像 img horar
  • Angular - Safari 无法正确显示 DOM

    我是 Angular 的新手 使用 Angular 4 我尝试通过在关联的组件类文件中设置属性来更新特定元素 但是 除非我尝试强制重新绘制网页 通过调整窗口大小等 否则页面不会更新 我打开检查器 看到 DOM 已更改 但显示与元素检查器中的
  • 如何在WebBrowser控件中注入Javascript?

    我试过这个 string newScript textBox1 Text HtmlElement head browserCtrl Document GetElementsByTagName head 0 HtmlElement scrip
  • 如何使用javascript隐藏div

    我想使用 Javascript 隐藏一个 div 下面是我的div div class ui dialog titlebar ui widget header ui corner all ui helper clearfix span cl
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • 两个日期之间间隔 15 分钟 javascript

    问题 我需要将两个日期 时间戳之间的所有 15 分钟时隙 日期格式 2016 08 10 16 00 00 创建为 HH mm 格式的数组 其中分钟限制为 00 15 30 45 示例 中午 12 30 到下午 2 30 将 gt 12 3
  • 是否可以让 webpacks System.import 使用 ajax (用于进度事件)?

    所以我刚刚更新到 webpack 2 并进行了第一个工作设置 其中 webpack 通过查看 System import 调用自动创建块 相当甜蜜 但是 我使用 ajax 调用加载初始块 以便我可以加载时显示进度 https stackov
  • 未处理的承诺拒绝:Zone.js 检测到 ZoneAwarePromise `(window|global).Promise` 已被覆盖

    我尝试将 Angular2 快速入门代码合并到我当前的 webpack 构建中 似乎有些东西正在覆盖zone js抛出此错误的承诺 根据我见过的大多数 stackoverflow 帖子 zone js文件需要在任何可能包含承诺的文件之后加载
  • React TypeError:x 不是函数

    我在子组件中从父组件调用函数 booksRefresh 但出现错误 类型错误 booksRefresh 不是函数 我不知道为什么 因为 booksRefresh 是一个函数 有人可以帮我解释为什么会出现这个错误吗 这是我的代码 import
  • 如何在 JavaScript 中从代理对构造 UTF-16 字符?

    以下计算 Unicode 代码点的 UTF 16 代理对 戴着医用口罩的脸 https emojipedia org face with medical mask 但是如何从代理对构造字符以在字符串中使用呢 const codepoint
  • 使用 Javascript 检测 Pepper (PPAPI) Flash

    我们使用的是专有的文档查看器 它与某些 Chrome 版本中的 Pepper 版本的 Flash 配合得不太好 所以我希望能够检测到它并重定向到不同格式的相同内容 由于这个版本似乎落后于 NPAPI 版本 所以我一直在使用闪光检测 http
  • 通过ajax执行后期操作时如何克服CORS重定向问题?

    我可以通过外部登录表单中的 post 方法类型提交表单来登录 roundcube 实例 托管在另一台服务器上 我收到此错误 通过 ajax 签名时 XMLHttpRequest 无法加载https 192 168 0 7 mail http
  • 如何用时刻找到与给定时间最接近的时间?

    所以我有一个简单的代码 一个工作代码 它使用 moment 获取最接近给定时间的时间 Current time in millis const now moment 10 16 HH mm format x List of times co
  • 如何在 ionic2 中 pop() 之后重新加载 ion-page

    我有2页Page1 and Page2 我用过this nav pop 在Page2中 它将弹出Page2 Page1将启用 但我想刷新Page1 先感谢您 您可以将父页面与导航推送一起传递 这样您就可以将父页面作为 navParamter

随机推荐

  • Webpack babel 6 ES6 装饰器

    我有一个用 ES6 编写的项目 使用 webpack 作为我的打包器 大多数转译工作正常 但是当我尝试在任何地方包含装饰器时 我收到此错误 Decorators are not supported yet in 6 x pending pr
  • 当人们说 css 中没有父选择器时,他们是什么意思?

    例如 假设我有一个如下所示的 HTML 我没有选择父元素 ul 吗 ul margin 50px ul test li hello li how are u 为了理解它们的含义 您需要理解什么选择意味着在CSS parent简单 By se
  • apache beam 2.7.0 在 utf-8 编码法语字符中崩溃

    我正在尝试将 csv 从 google 云平台的存储桶写入数据存储区 其中包含法语字符 口音但我有一条有关解码的错误消息 尝试从 进行编码和解码后latin 1 to utf 8 没有成功 使用unicode unicodedata 和编解
  • php从mysql输出到html表

    目前我正在开发一个网站正常运行时间搜索引擎 但是我遇到了一个愚蠢的问题 我想在表中输出多个 mysql 行 但是下面的代码会导致为找到的每一行创建一个单独的表 预先感谢您的帮助 searchTerm trim GET searchterm
  • Microsoft Graph SDK - 登录

    使用 MS Graph 是否可以只登录一次 目前 每当我调用 graphServiceClient 时 它都会要求我登录或选择登录的用户 有什么方法可以避免选择登录用户的过程吗 提前致谢 目前 这就是我初始化 graphService 的方
  • FQL 错误 102 需要用户会话进行重复查询

    我有一个功能齐全的 FQL 查询 但是当第二次触发它时 我收到错误代码 102 需要用户会话 在我的应用程序上 我有一个自动完成朋友搜索功能 我正在使用 jquery ui 自动完成功能和使用 AJAX 的动态源 这是我的 PHP 函数 f
  • 如何使用apache pig在hadoop集群上加载文件?

    我有一个pig脚本 需要从本地hadoop集群加载文件 我可以使用 hadoop 命令列出文件 hadoop fs ls repo mydata 但是当我尝试在 Pig 脚本中加载文件时 它失败了 加载语句是这样的 in LOAD repo
  • 如何在c中使用宏释放指针

    我想在 C 代码中编写宏来释放许多指针 如下所示 FREE ptr1 ptr2 ptr3 ptr4 ptrx 对我来说 这比 FREE ptr1 FREE ptr2 FREE ptr3 FREE ptr4 FREE ptrx 提前致谢 问候
  • WKWebView 在未呈现时不加载资源

    我正在尝试将我的应用程序从 UIWebView 转移到 WKWebView 当应用程序启动时 我的应用程序正在将 HTML 文件下载到文件系统 下载完成后 将创建一个 webview 对象 不会显示在屏幕上 并从设备加载 HTML file
  • Julia:如何将数据复制到 Julia 中的另一个处理器

    在 julia 中如何将数据从一个处理器移动到另一个处理器 假设我有一个数组 a 1 10 或者其他一些数据结构 将其放在所有其他可用处理器上以便它可以在这些处理器上作为相同的变量名使用的正确方法是什么 一开始我不知道该怎么做 所以我花了一
  • 与许多开发人员共享 Gradle 用户主页有什么缺点吗?

    Question 简而言之 在同一文件系统上的多个开发人员之间共享 Gradle 用户主目录是否有任何缺点 更详细 我们的目标是通过本地 Gradle 缓存节省磁盘空间 Gradle 用户指南建议缓存对于并发访问是安全的 目前似乎没有任何方
  • 在另一个类中使用选定的行

    我认为这是基本问题 因为 stackoverflow 上到处都是这样的问题 ofc google 上也有这样的问题 但没有任何帮助我 我需要将表示选择哪一行的整数值传递给另一个类 这是我的代码 TableViewController h i
  • 通过 MS Graph API 更新事件,删除事件中的加入按钮

    我在 Outlook 日历中创建了一个活动 该活动包含团队加入链接 当我从 MS Graph API 更新事件时 加入按钮被删除 这是我正在做的示例代码 void UpdateEventInCalendar string eventId v
  • 在 Typescript 中选择 并省略 !== Foo?

    我遇到了一个错误 Pick
  • 从 UIScrollView + iphone 生成 PDF

    我想生成一个 UIScrollView 的 pdf 其内容大小接近 320 2000 如果我使用当前图形图像上下文来捕获滚动视图层 那么它仅捕获滚动视图的可见部分 而不是该滚动视图的整个层 我正在使用下面的代码 void CreatePdf
  • 在 Rails 中上传文件

    我想在我的网站中创建一个部分 访问者可以在其中上传文件 pdf 如何才能做到这一点 另外 上传 pdf 后 我需要该文件的链接 我没有使用无聊的文本链接 而是考虑使用 pdf 第一页的缩略图 有没有一个工具可以做到这一点 For the 上
  • 使用 JQuery 从视图状态获取值?

    是否可以使用 JQuery 从视图状态中获取特定值 我正在开发自定义控件 它使用jquery 嵌入到控件本身中来操作文本框中的值 我需要实现最小值和最大值 属性在控件中设置 并存储在视图状态中 相反使用隐藏的输入字段 我宁愿只是将信息从视图
  • 如何在 Bottle 微框架中使用 beaker session?

    当我尝试使用烧杯将某些内容分配给会话字典时 出现以下错误 Traceback most recent call last rv callback a ka File controllers py line 30 in login s ema
  • 所有正在运行的容器上的 Docker exec

    我正在服务器上运行多个 docker 容器 并且需要对所有容器上的存储库执行 git pull 我尝试过使用这个 docker exec docker ps q bash c cd var www html git pull 但它出错了 O
  • 以编程方式发送键盘事件不会将它们分派到输入中

    我将以编程方式生成的键盘事件发送到文档 我希望当前聚焦的输入元素能够显示它们 但事实并非如此 事件是使用以下函数从字符串生成的 const simulateKeyPress keys gt keys split forEach theKey