【发布时间】:2020-02-11 15:05:40
【问题描述】:
我一直在尝试创建一个基于 GeckoView 的网络扩展程序,用于在我的 facebook 移动提要上下载图像。因此,作为第一次运行,我使用谷歌浏览器中的 Inspect> 控制台来测试一个简单的脚本来检测所有图像并使边框变为红色:
var imgs=document.getElementsByTagName("img");
for (i=0;i<imgs.length;i++)
{
imgs[i].style.border="3px solid red";
}
上述代码行在谷歌浏览器控制台中运行良好,适用于许多网站(包括 facebook)。但是,当我将 JS 代码打包为 geckoview Web 扩展的内容脚本时,它根本无法工作!以下是我迄今为止尝试过的所有技巧:
-
通过包含以下内容确保在文档之后加载 content_script:
"content_scripts": [{ "run_at": document_end, "js": ["myscript.js"], "matches": ["<all_urls>"], "match_about_blank": true, "all_frames": true }]也试过了:
"run_at": document_idle. 使用
document.wrappedJSObject.getElementsByTagName("img")确保“X 射线”视力关闭取消注册和重新注册 Web 扩展。
这些都不起作用。有趣的是,网络扩展适用于除 facebook 之外的所有其他网站! 所以我怀疑我有两个问题之一:
- Facebook 在隐藏 DOM 方面做得非常出色!
- GeckoView 无法访问“动态生成”图像元素的 DOM。
任何帮助将不胜感激:)
【问题讨论】:
-
首先使用API。其次,是的,Facebook 不允许这样做,因此对您来说并不容易。而你所做的每一件事情很可能会在几天内坏掉。
-
如果谷歌浏览器控制台能够检测到图像标签,那么扩展也应该是可能的。我没有使用他们的 API,因为我想让我的扩展程序和应用程序独立于 facebook。
-
当然可以。 Facebook 只是为你努力
标签: javascript facebook dom geckoview