打开 chrome 中其他扩展插入的元素的 "closed" shadowRoot
open the "closed" shadowRoot of element inserted by other extension in chrome
好的 google chrome 中的翻译扩展,具有弹出功能,它会立即显示所选单词的翻译,我想访问弹出显示的那些翻译,但是这个弹出元素是 shadowRoot("已关闭”),所以 javascript 无法访问其内容,我将一篇关于该主题的文章标记为红色,作者说:
But really there is nothing stopping someone executing the following JavaScript before your component definition.
Element.prototype._attachShadow = Element.prototype.attachShadow; Element.prototype.attachShadow = function () { return this._attachShadow( { mode: "open" } ); };
是否可以更改其他扩展的attachShadow 方法?如果是这样,我的分机应该在哪里执行? background_script 或者也许在某个地方。我认为每个扩展都有自己的环境,我没有机会编辑它们的方法。但愿我是错的:)
无需覆盖它。只需在内容脚本中使用此方法:
let shadowRoot = chrome.dom.openOrClosedShadowRoot(element);
它不在文档中,但这是它在源代码中的定义:link。
好的 google chrome 中的翻译扩展,具有弹出功能,它会立即显示所选单词的翻译,我想访问弹出显示的那些翻译,但是这个弹出元素是 shadowRoot("已关闭”),所以 javascript 无法访问其内容,我将一篇关于该主题的文章标记为红色,作者说:
But really there is nothing stopping someone executing the following JavaScript before your component definition.
Element.prototype._attachShadow = Element.prototype.attachShadow; Element.prototype.attachShadow = function () { return this._attachShadow( { mode: "open" } ); };
是否可以更改其他扩展的attachShadow 方法?如果是这样,我的分机应该在哪里执行? background_script 或者也许在某个地方。我认为每个扩展都有自己的环境,我没有机会编辑它们的方法。但愿我是错的:)
无需覆盖它。只需在内容脚本中使用此方法:
let shadowRoot = chrome.dom.openOrClosedShadowRoot(element);
它不在文档中,但这是它在源代码中的定义:link。