Firefox WebExtensions将脚本插入iframe

我是不熟悉JavaScript和编写Web扩展程序的人。我想编写一个Web扩展程序,以更改我的大学计划器中计划条目的颜色。 经过一番努力之后,我终于能够编写一个可以在uni平台上完成的Firefox WebExtension。 问题是我的大学使用多个平台来完成不同的任务,这些平台可以直接访问,也可以通过将它们全部连接的平台访问。 我只能在直接显示我的日程安排的平台上成功更改颜色,而不能在“常规”平台上更改颜色。 经过更多研究后,我发现了问题所在。规划器加载到iframe中,并且由于两个平台的域都不同,所以我认为这似乎是一个更大的问题。 我阅读了许多有关如何使用这些跨域iframe的令人困惑的信息 无法真正理解或无法执行。

据我所知,我应该能够直接将脚本直接插入iframe中并获得所需的结果。但是我还没有做到。我没有找到有关如何使用WebExtension进行操作的任何有用信息。如果有人可以帮助我解决这个问题,我将不胜感激。

也许我的想法是完全错误的,我需要尝试其他一些事情,例如使用帖子消息(我也不知道如何实现)或完全不同的事情。因此,无论如何,我期待您的答复。

GY176984859 回答:Firefox WebExtensions将脚本插入iframe

很抱歉,但是如果该iframe包含来自其他域的网站,则无法修改iframe上的一个网站。

也许,您使用Java脚本创建了一些示例,但是如果深入了解此示例,您会发现它们可以工作,因为域始终相同...

其他来源禁止此操作。

,
  

据我所知,我应该能够直接直接插入脚本   在iframe中并获得所需的结果。但是我没办法   这样。

iframe就像网页一样,您可以像任何网页一样将脚本注入其中。

有以下注意事项:

  • 扩展名必须针对iframe纠正Permission(可能是 (来自其他域)
  • 在其中设置all_frames: true (默认为false) content_scripts

如果您通过manifest.json以外的其他方式注入脚本,请让我知道,我也对此进行了解释。

,

解决方案

由于 erosman 的评论,我再次查看了manifest.json,并进行了一些尝试,终于使我的脚本按我想要的方式工作。我的问题实际上出在我提供的URL模式错误。对于像我这样的类似问题的人,我将提供可以节省很多时间的事情。

erosman 这样说:

  

iframe就像网页一样,您可以像任何网页一样将脚本注入其中。

由于我不在乎从父文档访问iframe的内容,因此这意味着我确实可以直接将脚本注入iframe并在其中运行。结果将在包含iframe的网页上可见。就Firefox WebExtensions而言,这仅意味着在manifest.json中设置正确的参数。在content_scripts中,设置"all_frames": true以允许您的脚本被注入帧中。现在,您必须提供显示iframe的网页的URL以及iframe的URL。您的content_scripts应该如下所示:

    "content_scripts": [
        {
         "matches": ["*://*.webpage.org/*","*://*.iframe.com/*"],"all_frames": true,"js": ["script.js"]
        }
     ]
本文链接:https://www.f2er.com/3148763.html

大家都在问