在firefox扩展名中访问__reactInternalInstance $ xxx

时间:2020-02-16 23:30:19

标签: javascript reactjs firefox firefox-addon

我正在尝试创建一个 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"
  ],
..
}

此图显示了在Firefox开发人员工具中打开时的对象: Developer Tools, showing the __react keys

没有已安装React Developer Tools,所以它们在这里不能干涉..有人知道我缺少什么吗?非常感谢您的帮助!

0 个答案:

没有答案