gpt4 book ai didi

移动版 Firefox (Fennec) 附加组件 : executing code on page loads

转载 作者:行者123 更新时间:2023-12-02 10:24:44 27 4
gpt4 key购买 nike

我正在尝试编写一个移动 Firefox 插件,每次加载页面时都会自动执行一段 JavaScript 代码。我为早期版本的 Fennec 编写了一些代码,但是由于较新的 Fennec 版本中的多处理系统(https://wiki.mozilla.org/Mobile/Fennec/Extensions/Electrothesis/),该代码必须是移植的。我基于 http://people.mozilla.com/~mfinkle/tutorials/ 的教程获得一个版本,每当在浏览器菜单中选择一个选项时,该版本就会执行一段代码。该解决方案由两部分组成,即overlay.js(用于主(应用程序)进程)和content.js(用于子(内容)进程)。 Overlay.js 在overlay.xul 中加载,而content.js 通过overlay.js 中的以下代码加载新选项卡:

window.messageManager.loadFrameScript("chrome://coin/content/content.js", true);

每当点击浏览器菜单中的选项时,overlay.js 中的代码就会向 content.js 发送一条消息,然后正确执行所需的代码(一些脚本标签只是添加到页面的头部)。但是,我不知道如何在页面加载时自动执行代码。我在 content.js 中尝试了以下操作:

function addCoin(aMessage) { ... }

// this executes the desired code every time an option is clicked in the browser menu
addMessageListener("coin:addCoin", addCoin);

// this attempts to execute the code on every page load; i.e., after this script has
been loaded for the new tab
addCoin(null);

但是最后一条语句没有效果。然后,我尝试在末尾添加以下语句:

sendAsyncMessage("coin:scriptLoaded", { });

此语句向overlay.js 脚本发送一条消息,该脚本为此消息注册一个监听器,并作为响应简单地发送与单击浏览器菜单中的选项时相同的消息,即“coin:addCoin”。然而,这也不起作用。最后,我尝试寻找overlay.js脚本可以监听的某些事件(例如“tabOpened”或其他事件),但找不到任何东西。

有人知道如何在每次页面加载时自动执行代码吗?

问候,

威廉

最佳答案

在你的 content.js 脚本中,你可以简单地为“load”事件注册一个事件监听器,就像在旧的单进程 Firefox 中一样:

addEventListener("load", someFunc, true);

每当标签中加载网页时,这都会调用“someFunc”。

content.js 中的任何全局代码都会在选项卡初始创建时执行,而不是在页面加载时执行。使用全局代码来设置事件监听器或消息监听器。 Web 内容仍然会触发您可以在 content.js(子脚本)中捕获的事件。

关于移动版 Firefox (Fennec) 附加组件 : executing code on page loads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6695159/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com