由 Chrome 扩展触发的 DOM 事件是不是在主页的上下文中传播?
Posted
技术标签:
【中文标题】由 Chrome 扩展触发的 DOM 事件是不是在主页的上下文中传播?【英文标题】:Are DOM events triggered from a Chrome extension propagated in the main page’s context?由 Chrome 扩展触发的 DOM 事件是否在主页的上下文中传播? 【发布时间】:2013-07-14 01:12:03 【问题描述】:我正在尝试编写一个 Chrome 扩展程序,以编程方式将点击事件发送到页面上的特定链接。这个特定的链接在我可以通过 Chrome 的网络检查器看到的页面上知道点击事件处理程序。
我在 Chrome 扩展程序的 content_page
脚本中使用 jQuery .click()
发送此点击事件,但看起来处理程序没有触发。当控制台记录 jQuery .click()
调用的结果时,我可以看到预期的返回值正在返回,所以我知道这段代码实际上正在运行。Ch
我知道这个 jQuery 代码可以工作,因为我可以将同一行粘贴到该页面的 Chrome 控制台中并获得我期望的结果。
我是否疯狂地认为我可以从扩展的content_page
触发 DOM 事件?我知道content_page
在单独的环境中执行,但我很确定触发的 DOM 事件会在两个环境中冒泡。
(如果我没疯,你会怎么调试?)
【问题讨论】:
你能举个小例子来说明这个问题吗? 【参考方案1】:答案是肯定的——点击事件 do 传播,但是当我使用 jQuery 定位想要发送 .click()
的 DOM 元素时发生了一些奇怪的事情,但它在使用原生 DOM 时有效像getElementsByClassName()
这样的遍历函数。
谜团解开:只需使用 vanillaJS 方法在 DOM 元素本身上调用 click()
而不是 jQuery 包装的版本。
【讨论】:
使用DOM遍历方法并没有解决问题。它是通过使用 VanillaJS 的click()
方法而不是 jQuery 的 .click()
来解决的。 $('body')[0].click();
也可以。以上是关于由 Chrome 扩展触发的 DOM 事件是不是在主页的上下文中传播?的主要内容,如果未能解决你的问题,请参考以下文章
来自 Chrome 扩展的 Outlook 日历输入字段 DOM 操作
元素添加到 DOM 时触发事件:JQuery Livequery Equivalent in 1.7
我无法影响“拒绝执行内联事件处理程序”错误的 DOM 原因。 -Chrome 扩展 [重复]
chrome扩展跟踪前端JavaScript,该JavaScript使用DOM/jQueryAPI在运行时操作html-DOM元素(例如,更改样式、附加事件侦听器)。