我实际上想在Gmail中添加一个按钮。当有人打开电子邮件时,他/她会看到一个按钮,当有人点击它时,我会向其添加一个功能。我知道一种方法但是它非常密集,我每300毫秒使用一次setInterval()并运行一个函数来检查它是否是Gmail,然后动态添加一个按钮。我需要一些不那么密集的东西,因为我不希望人们在运行我的添加时遇到问题。
我想从我的添加脚本中获取所有内容,以便我可以轻松地在我的其他功能之间进行通信。
答案 0 :(得分:1)
添加到依赖的页面。页面可以做很多棘手的事情(比如使用PJAX的GitHub,请参见this addon如何完成)。
方法1 - 将addEventListener添加到窗口或gBrowser 但大多数情况下,您可以捕获DOMContentLoaded或load事件。模板HERE。
方法2 - 观察http-on-examine-response和loadContext 如果nsIHTTPChannel的URL与您的模式匹配,则从loadContext获取contentWindow然后进行操作。我需要为此制作一个干净的模板,但你可以看到一些凌乱的模板:here和here
方法3 - 添加ProgressListener ProgressListeners很好,因为它可以帮助你捕获锚点更改,通常当站点ajax和更改页面时,它们会以某种方式更改URL,但它并没有真正加载新页面。我正在为此制作一个模板,但还没准备好。
有关addEventListener的信息 如果在某些情况下添加事件侦听器,则适用于第3个参数为true或false时。如果您找到适合您情况的产品,它将始终有效。
要弄清楚哪种组合有效,请安装此插件:event-listener-experiment-DOMC-and-load它位于GitHub上,因此您可以使用此插件直接从GitHub进行安装GitHub Extension Installer
安装该插件然后导航到您的页面,查看浏览器控制台以查看您获得的反馈。它会告诉你哪些适合你。如果您需要更多帮助,请告诉我该网站,我会帮您解决这个问题。
这是一个可以在找出组合后使用的引导程序模板: