如何在 DIV 元素上合成浏览器单击事件?

2024-03-21

通过按钮,我可以调用click()方法来生成点击。然而,DIV 并非在所有浏览器上都具有此方法。但我可以将点击事件侦听器附加到它们(通过设置.onclick="..."或添加事件监听器)。

有什么方法可以让我以编程方式“合成”对此类元素的点击,但是不使用 jQuery?理想情况下,这不依赖于注册侦听器的特定方式(因此只需调用eval(div.onclick)对我不起作用),并且适用于所有现代浏览器。

(出于好奇,我需要这个来进行自动化测试,而不是欺骗用户。)


我最近在我的库中编写了一个函数来执行此操作,可以在 GitHub 存储库中找到它here https://github.com/Wolfy87/Spark/blob/master/src/trigger.js.

它是完全跨浏览器的,并在选择器引擎返回的元素上触发指定的事件。我相信您能够从中提取您需要的代码。

如果没有,这就是您所需要的。将元素替换为元素。并输入事件类型,在本例中,click.

// Check for createEventObject
if(document.createEventObject){
    // Trigger for Internet Explorer
    trigger = document.createEventObject();
    element.fireEvent('on' + type, trigger);
}
else {
    // Trigger for the good browsers
    trigger = document.createEvent('HTMLEvents');
    trigger.initEvent(type, true, true);
    element.dispatchEvent(trigger);
}

这是一个示例实现。

function simulateEvent(element, type) {
    // Check for createEventObject
    if(document.createEventObject){
        // Trigger for Internet Explorer
        trigger = document.createEventObject();
        element.fireEvent('on' + type, trigger);
    }
    else {
        // Trigger for the good browsers
        trigger = document.createEvent('HTMLEvents');
        trigger.initEvent(type, true, true);
        element.dispatchEvent(trigger);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 DIV 元素上合成浏览器单击事件? 的相关文章

随机推荐

  • 从字符串中删除所有特殊字符,不包括非拉丁字符

    我想从字符串中删除除数字和普通 a z 字符之外的所有特殊字符 我这样做是这样的 text text replaceAll a zA Z0 9 这种方法的问题在于 它还会删除所有非拉丁字符 如 等 我所说的非特殊字符 我想保留的字符 是指所
  • 在循环中使用 string.length() 是否有效?

    例如 假设string s这是 for int x 0 x lt s length x 比这个更好 int length s length for int x 0 x lt length x 谢谢 乔尔 一般来说 如果结果在迭代期间没有改变
  • Allegro 5 和 Visual Studio Express 2013:缺少 MSVCR110D.dll

    我正在使用 Allegro 5 制作一个程序 我有两台计算机 一台装有 VS Express 2013 for Desktop 我将其称为 C1 另一台装有 VS Professional 2013 我将其称为 C2 在 C2 上 我的程序
  • 使用迭代器的初始值设定项列表构造容器

    可以构造一个具有迭代器范围的向量 如下所示 std vector
  • 使用 Python 进行字符翻译(如 tr 命令)

    有没有办法进行字符翻译 音译 有点像tr https perldoc perl org functions tr命令 使用Python Perl 中的一些例子是 my string some fields string tr dies ea
  • 解析服务器安全性[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在运行 Parse Server 的干净 Heroku 和 MLab 安装 https github com ParsePlatf
  • 在 Azure 中创建的 VM 上的 TenantEncryptionCert

    我创建了预安装 SQL Server 的 Azure VM 并配置了 IIS 以在其上运行我的 NET 应用程序 为我的应用程序配置 SSL 时 我注意到服务器上已经存在许多证书 其中相当一部分是租户加密证书由 Windows Azure
  • 在 Windows 剪贴板复制缓冲区中包含格式信息以粘贴到 Excel 中

    我的应用程序将表格数据写入 Windows 复制缓冲区 以便用户粘贴到 Excel 中 这适用于未格式化的表格数据 包括制表位以及单元格和行分隔符的新行 我想在复制缓冲区中包含格式化数据 网格线 背景颜色等 我可以这样做吗 如果可以 在哪里
  • 计算整个 GeoDataFrame 点的质心

    我想从 geojson 文件导入一些航路点 标记 然后确定所有点的质心 我的代码计算每个点的质心 而不是该系列中所有点的质心 如何计算系列中所有点的质心 import geopandas filepath r Shiloh json gdf
  • css - 显示:表格单元格和固定宽度[重复]

    这个问题在这里已经有答案了 我有一些divs with display table cell样式 我想在其上设置固定宽度divs并在内容不合适时截断其中的文本 HTML div class row div class cell style
  • 如何在 Postgres 9.5 中替换多个特殊字符

    我有一个包含可能包含特殊字符的名称列表的表 id name 1 Joh n 2 J rgen 3 Janna 4 dyr 是否有一个函数可以将每个字符替换为另一个特定字符 不一定是无重音的 像这样的事情 SELECT id function
  • Android 发现死锁

    当我运行 Android 服务时 有时会收到 ANR 我怀疑这是因为僵局而发生的 有没有一种简单的方法可以监控 Android 或 Eclipse 中的死锁 例如显示哪个线程持有哪个锁等的实用程序 有没有办法通过查看 traces txt
  • IntelliSense:命名空间“MSXML2”在 VS2012 中没有成员“DOMDocument”

    我正在尝试编译我继承的项目 然后遇到此错误 以下是一些相关代码 include
  • 如何将 JQuery 脚本添加到单个 WordPress 页面中?

    我想将 JQuery 脚本添加到单个 WordPress 页面中 但我不知道如何操作 我想注入的脚本示例 当以纯 HTML 形式注入时 此代码可以正常工作 但如何对 Wordpress 执行相同操作呢 我个人认为将 JavaScript 添
  • div CSS 上的右角功能区

    我正在尝试在 div 中制作一条角丝带 它无处不在 我希望它看起来整洁漂亮 但它覆盖了 div 坐得不太好 The ribbons corner ribbon width 100px background e43 position abso
  • 大型 Org-mode 文件中的光标移动缓慢以及“org-do-latex-and-lated”函数

    在一个几乎有 5000 行的 org 文件中 滚动速度慢得难以忍受 除非我转动font lock mode离开 检查发生了什么profiler 减速的主要原因是函数org do latex and related 定义于org el 似乎它
  • 如何使用 wlst 更新应用程序

    从控制台如果 1 要更新应用程序 1 所做的是 1 单击部署 2 选择应用程序名称并单击更新选项 3 这里他可能会改变 i Source Path ii Deployment Plan 现在 在我的应用程序中没有指定计划路径 因此要更新应用
  • Spring boot打包后找不到资源文件

    我使用 Spring boot maven 插件将应用程序打包为 jar 文件 可以找到资源文件直接在Intellij IDEA中运行 但之后找不到资源文件 显示错误为 java io FileNotFoundException 类路径资源
  • 修改清单文件 Win32 Visual Studio 2022

    如何在 Visual Studio 2022 中 修改 生成 Win32 应用程序的程序集清单文件 项目属性 gt Win32 资源 gt 清单路径设置为 gt 使用默认设置嵌入清单 我可以将其设置为使用自定义清单 但我想要做的是获取具有默
  • 如何在 DIV 元素上合成浏览器单击事件?

    通过按钮 我可以调用click 方法来生成点击 然而 DIV 并非在所有浏览器上都具有此方法 但我可以将点击事件侦听器附加到它们 通过设置 onclick 或添加事件监听器 有什么方法可以让我以编程方式 合成 对此类元素的点击 但是不使用