chrome中的谷歌翻译扩展,具有弹出功能,它立即显示所选单词的翻译,我想访问弹出窗口显示的那些翻译,但这个弹出元素是shadowRoot(“关闭”),所以javascript无法访问其内容,我红色一篇关于该主题的文章和作者说:
但实际上没有什么可以阻止某人在组件定义之前执行以下 JavaScript。
Element.prototype._attachShadow = Element.prototype.attachShadow; Element.prototype.attachShadow = function () { return this._attachShadow( { mode: "open" } ); };
是否可以更改其他扩展的attachShadow方法?如果是这样,我的扩展应该在哪里执行它? background_script 或者也许在某个地方。我认为每个扩展都有自己的环境,我没有机会编辑它们的方法。我希望我错了:)
无需覆盖它。
内容脚本中有一个特殊的方法。
let shadowRoot = chrome.dom.openOrClosedShadowRoot(element);
let shadowRoot = element.openOrClosedShadowRoot();
综合:
let shadowRoot = chrome.dom?.openOrClosedShadowRoot(element)
|| element.openOrClosedShadowRoot();