用于处理Facebook图像的Javascript代码可在控制台中使用,但不能在扩展程序中使用

问题描述 投票:0回答:1

我一直试图创建一个基于GeckoView的Web扩展程序,以便在我的Facebook移动feed上下载图像。因此,在第一次运行时,我使用了Google chrome中的Inspect>控制台来测试一个简单的脚本来检测所有图像并使边框变为红色:

var imgs=document.getElementsByTagName("img");
for (i=0;i<imgs.length;i++)
{
imgs[i].style.border="3px solid red";
}  

以上代码行在google chrome控制台中可以很好地在许多网站(包括facebook)上正常运行。但是,当我将JS代码打包为geckoview Web扩展的内容脚本时,它根本无法工作!这是到目前为止我尝试过的所有技巧:

  1. 通过包含以下内容,确保在文件之后加载了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.

  2. 通过使用document.wrappedJSObject.getElementsByTagName("img")确保关闭了“ X射线”视力]

  3. 取消注册并重新注册Web扩展。

  4. 这些都不起作用。有趣的是,Web扩展程序可在除facebook之外的所有其他网站上使用!所以我怀疑我有两个问题之一:

  1. Facebook在隐藏其DOM方面做得非常出色!
  2. GeckoView无法访问“动态生成的”图像元素的DOM。
  3. 任何帮助将不胜感激:)

我一直试图创建一个基于GeckoView的Web扩展程序,以便在我的Facebook移动feed上下载图像。因此,在第一次运行时,我使用了Google chrome中的Inspect>控制台来测试以下简单脚本:...

javascript facebook dom geckoview
1个回答
0
投票

我刚刚对其进行了测试,并且扩展名是为我编写的。您编写的代码仅会在加载时捕获页面上预设的图像,但是此后动态加载了许多Facebook网站,这可能就是为什么您看不到大多数图像添加边框的原因。

© www.soinside.com 2019 - 2024. All rights reserved.