监听元素的创建,并在元素出现在 Chrome 扩展程序的页面上时触发事件

2023-12-25

是否可以让 Chrome 扩展监听尚未创建的元素的出现?

假设用户单击按钮并且单击事件创建一个元素<div id='myDiv'>My Div</div>并将其添加到页面/DOM。是否可以设置一个侦听器,在该元素出现时自动触发事件?

或者我是否必须每隔 X 毫秒轮询页面并检查此元素?

顺便说一句,jQuery 和其他库对我来说不是一个选择。


The new DOM4 突变观察者 http://updates.html5rocks.com/2012/02/Detect-DOM-changes-with-Mutation-Observers可以做到这一点。我认为它还没有得到广泛支持,但幸运的是,Chrome 也支持它,因为WebKitMutationObserver.

从链接的教程页面修改而来,它监听页面上各处的突变:

var observer = new WebKitMutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        for (var i = 0; i < mutation.addedNodes.length; i++) {
            if(mutation.addedNodes[i].id == "myDiv") {
                // target node added, respond now...
            }
        }
    });
});
observer.observe(document, { subtree: true });

如果你能缩小你的听力范围observer.observe比更具体的元素document,这会给你带来一些性能提升。

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

监听元素的创建,并在元素出现在 Chrome 扩展程序的页面上时触发事件 的相关文章

随机推荐

  • 通过 ckeditor 上传的 django+heroku+S3 图片在创建帖子一段时间后被删除

    我已经在heroku中部署了我的django应用程序 postgresql作为数据库并用于存储我使用亚马逊S3存储的图像 我面临的问题是 用于创建我使用过的博客文章 ckeditor 因此用户可以输入图像以及内容文本来创建帖子 创建帖子后
  • 由于“找不到符号类 X”错误,无法在 Intellij Idea 中编译 java 类

    我在项目中从头开始创建了新的 Java 模块 在模块创建向导中选择了 创建 src 文件夹 源文件夹中有一个 com 包 其中包含两个公共类 例如 A 和 B A类实例化B类 IDE 不显示错误 并且当光标位于 A 类源内的类名上时 按 c
  • 模拟在默认系统相机应用程序中拍照

    我正在制作 Android 语音助手应用程序 在后台运行服务以识别语音命令 当用户说 自拍 这个词时 我想在默认系统相机应用程序中拍照 我已经知道如何使用语音命令 但问题是我无法让相机应用程序拍照 我尝试了一些方法但没有帮助 第一次我尝试模
  • 如何在页面刷新后保持登录状态?

    我正在使用 React 和 Node 开发一个全栈应用程序 以下是主屏幕 用户登录后 用户名会显示在导航栏中 服务器的响应 包括 JWT 会保存在本地存储中 如下图所示 现在 当我刷新页面时 用户已注销 这种情况不应该发生 因为我使用 ax
  • 如何在java和xml中传递自定义组件参数

    在 android 中创建自定义组件时 经常会被问到如何创建 attrs 属性并将其传递给构造函数 通常建议在 java 中创建组件时只需使用默认构造函数 即 new MyComponent context 而不是尝试创建一个 attrs
  • Font Awesome 5 Whatsapp 图标 CSS 样式

    我尝试使用下面的代码使用 font Awesome 5 呈现 Whatsapp 图标 i style background color 25d366 color white class fab fa whatsapp i 但它看起来像这样
  • 在Scheme(Fluent)中运行(do ...)内的代码与循环外的执行方式不同

    我的续集上一个问题 https stackoverflow com q 58906949 12388640 我正在使用 ANSYS Fluent 程序进行 CFD 模拟 该程序允许使用所谓的日志文件对模拟设置进行部分自动化 我刚刚知道该日志
  • EF 一对一更新失败

    我在 EF6 中定义了一对一关系 适用于插入 不幸的是 当我尝试使用断开连接的记录进行更新时 我收到错误 详细信息如下 NET 来源 namespace EF ConsoleApp Test public class Program pub
  • 如何在 HTML5 画布上绘制模糊的圆圈?

    我可以在 HTML5 画布上绘制一个简单的圆圈 但我想在它周围添加一些模糊效果 我发现的是这个网站 http flashcanvas net examples uupaa js spinoff googlecode com svn trun
  • Plone 4.3 升级后 TinyMCE 工具栏丢失

    我将 Plone 站点从 4 2 升级到 4 3 升级步骤基本上是 运行 install sh 以拥有 4 3 环境 将 Data fs 复制到 var filestorage 并将自定义敏捷包复制到 src 在ZMI中运行升级 一切看起来
  • Cmake 与 make 示例代码?

    我想知道是否有任何示例代码Makefiles make and CMakeLists txt cmake 两者都做同样的事情 唯一的区别是一个是写在make另一个在cmake 我尝试寻找 cmake vs make 但从未找到任何代码比较
  • Angular js - 错误:[$parse:lval] 尝试将值分配给非左值[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我的这行代码有一个错误 但代码完成了它的使命 我不明白会发生什么 我对角度很陌生
  • Android 编程断言

    你能在android编程中使用断言吗 如果是这样 你如何在 Eclipse 中启用它 因为问题是是否可能 是的 这是可能的 但我同意 CommonsWare 认为应该避免断言 无论如何看到我可以在 Android 设备上使用断言吗 http
  • Spark 1.6 在 EMR 上写入 S3,因为 Parquet 挂起并失败

    我正在创建一个 uber jar Spark 应用程序 将其提交到 EMR 4 3 集群 我正在配置 4 个 r3 xlarge 实例 其中一个作为主实例 另外三个作为核心 我从控制台预安装了 hadoop 2 7 1 ganglia 3
  • 递归构造函数调用错误找不到解决方案

    我在四个公共金枪鱼部分 部分 可能是一个类或其他东西 处收到递归构造溢出调用错误 它适用于教程 但不适合我 似乎看不到在哪里 public class tuna private int hour private int minute pri
  • 如何检查变量是否是数组?

    我对变量名有一个循环 我需要检查变量的内容是否是数组 for varname in AA BB CC do local val if varname is array then how can I perform this test ech
  • 如何在 Chrome DevTools 网络面板中按文本和属性进行过滤?

    我想通过 URL 中的方法属性和文本过滤 Chrome DevTool 的网络面板 例如 如果我在 URL 中搜索文本 chromequestion 并且仅搜索 HTTP GET 请求 忽略 PUT POST DELETE 等 I am a
  • JOOQ 查询的时间戳精度

    我有一个 PSQL 原始查询 我想将其转换为 JOOQ 查询 SELECT DISTINCT date trunc day ref date AS refdate FROM income WHERE probos id probosId 我
  • 在 python lxml 库中使用西里尔字母的正确方法是什么

    我尝试生成其中包含西里尔字母符号的 xml 文件 但结果却出人意料 避免这种结果的最简单方法是什么 例子 from lxml import etree root etree Element print etree tostring root
  • 监听元素的创建,并在元素出现在 Chrome 扩展程序的页面上时触发事件

    是否可以让 Chrome 扩展监听尚未创建的元素的出现 假设用户单击按钮并且单击事件创建一个元素 div My Div div 并将其添加到页面 DOM 是否可以设置一个侦听器 在该元素出现时自动触发事件 或者我是否必须每隔 X 毫秒轮询页