Chrome 中的谷歌翻译扩展,具有弹出功能,它会立即显示所选单词的翻译,我想访问弹出显示的那些翻译,但是这个弹出元素是 shadowRoot("closed"),所以 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);
-
let shadowRoot = element.openOrClosedShadowRoot();
合并:
let shadowRoot = chrome.dom?.openOrClosedShadowRoot(element) || element.openOrClosedShadowRoot();
关于javascript - 在 chrome 中打开其他扩展插入的元素的 "closed"shadowRoot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70489914/