我正在尝试创建一个 Firefox扩展,以向我经常使用的(视频流)网站添加功能。
该站点使用React并在其组件内隐藏了方便的API。
以下代码在我将其复制到开发人员控制台时有效,但是在我从扩展Javascript文件执行该代码时不起作用,因为由于某些原因__reactXXXX
键在那里不可见。
{
var videoContainer = document.querySelector('div.VideoContainer')
console.log("videoContainer is: ", videoContainer)
for (videoContainerKeys in videoContainer) {
if (videoContainerKeys.startsWith("__react")) { // this is never true when called through the extension
var reactVideoContainerElement = videoContainer[videoContainerKeys];
for (reactVideoContainerElementKey in reactVideoContainerElement) {
if (reactVideoContainerElementKey.startsWith("return")) {
var returnReactVideoContainerElement = videoContainer[videoContainerKeys][reactVideoContainerElementKey];
for (returnKey in returnReactVideoContainerElement) {
if (returnKey.startsWith("stateNode")) {
console.log("api is", (returnReactVideoContainerElement[returnKey]));
}
}
}
}
}
}
}
它基本上与StackOverflow中其他大多数文章的代码相同。有趣的是,当我将代码粘贴到开发人员工具中时,代码就可以工作,但是从扩展名加载时,代码却无法工作。
我的 manifest.json 权限看起来像这样
{
"manifest_version": 2,
...
"permissions": [
"webNavigation",
"devtools"
],
..
}
我没有已安装React Developer Tools,所以它们在这里不能干涉..有人知道我缺少什么吗?非常感谢您的帮助!