Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从注入的阴影dom内部在内容脚本中运行函数_Javascript_Html_Dom_Google Chrome Extension - Fatal编程技术网

Javascript 从注入的阴影dom内部在内容脚本中运行函数

Javascript 从注入的阴影dom内部在内容脚本中运行函数,javascript,html,dom,google-chrome-extension,Javascript,Html,Dom,Google Chrome Extension,因此,我有一个扩展,它注入了一些html,这样屏幕右下角就会显示一些我的书签网站。我希望能够单击这些元素并在我的内容脚本中运行代码。因为我可以访问所有dom元素,所以我想我可以通过简单地使用onclick来做到这一点,但显然我不了解内容脚本的范围和页面本身 html/css通过内容脚本注入,模板导入到创建阴影dom的宿主元素中。我不认为影子dom会影响js范围,但这是可能的 我已经注入了一些html,所以可能的副本不适用 onclick看起来像 <div onclick="selectLi

因此,我有一个扩展,它注入了一些html,这样屏幕右下角就会显示一些我的书签网站。我希望能够单击这些元素并在我的内容脚本中运行代码。因为我可以访问所有dom元素,所以我想我可以通过简单地使用onclick来做到这一点,但显然我不了解内容脚本的范围和页面本身

html/css通过内容脚本注入,模板导入到创建阴影dom的宿主元素中。我不认为影子dom会影响js范围,但这是可能的

我已经注入了一些html,所以可能的副本不适用

onclick看起来像

<div onclick="selectLink(0)">Link</div>

我已经为此挣扎了一段时间。我只是不知道如何从页面上下文向我的应用程序发送事件。我需要添加侦听器吗?Idk,谢谢你的帮助。

是这样的。您需要使用两个示波器。1是内容脚本范围,另一个是实际的站点范围。当您将代码注入页面作用域时,对于您想要处理的任何事件,添加一个事件分派器,它向您的内容脚本发送一个
customEvent
。您可以对数据执行任何操作,然后通过另一个
customEvent
将响应发送回实际的站点范围,并根据需要使用它

来自

如果页面希望与内容脚本通信(或与 通过内容脚本进行扩展),它必须通过共享 多姆


因此,我通过以某种方式更改DOM并使用查看内容脚本中的更改来实现这一点。

范围应与页面相同。。它是偶然出现在一个iframe中的吗?不,没有iframe它的孩子到身体。嗯。。您可以尝试在dom插入后检查扩展中的事件&从javascript本身绑定onclick事件。这也是连接到扩展的其余部分,我只想从注入的html中访问内容脚本。从页面内部,我认为我无法访问chome API。可能的副本-这篇文章包含了您需要了解的关于注入脚本的几乎所有信息,包括通信。
// changes the groups coresponding tab to the url specified by link
function selectLink(){
    var indexes = null;
    ship("select-link", {}, {}, indexes.group, indexes.link);
}