如何从Firefox插件将javascript注入页面并运行它?
我正在编写一个Firefox扩展(插件),允许用户用文本和/或图形对任何页面进行注释,然后保存包含注释的页面图像。用例将是客户端查看网页、向网页添加反馈、保存此图像并通过电子邮件将其发送回web开发人员或测试人员,以获取GUI错误的带注释的屏幕截图等 在开发扩展之前,我用javascript编写了注释/绘图功能。此脚本向要绘制的页面添加一个如何从Firefox插件将javascript注入页面并运行它?,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,我正在编写一个Firefox扩展(插件),允许用户用文本和/或图形对任何页面进行注释,然后保存包含注释的页面图像。用例将是客户端查看网页、向网页添加反馈、保存此图像并通过电子邮件将其发送回web开发人员或测试人员,以获取GUI错误的带注释的屏幕截图等 在开发扩展之前,我用javascript编写了注释/绘图功能。此脚本向要绘制的页面添加一个元素,以及一个工具栏(在中),其中包含用于不同绘制工具的按钮(每个元素),例如线条、方框、椭圆、文本等。手动将其包含在页面中时,效果良好 我现在需要一种方法来
元素,以及一个工具栏(在
中),其中包含用于不同绘制工具的按钮(每个
元素),例如线条、方框、椭圆、文本等。手动将其包含在页面中时,效果良好
我现在需要一种方法来扩展到:
init()
函数后,需要以某种方式运行画布和工具栏元素等,但我无法确定如何从扩展中调用它这就是我如何通过设置onload属性来调用附加到页面的脚本中的init函数来解决问题的方法
var myScript = top.window.content.document.createElement('script');
myScript.type = 'text/javascript';
myScript.setAttribute('src','chrome://path/to/script.js');
myScript.setAttribute('onload', 'firefoxInit()');
top.window.content.document.getElementsByTagName('head')[0].appendChild(myScript);
你找到这个了吗?我成功地将代码注入到页面中,但我还不知道如何调用它。@Ephoria83在Firefox 4中,不确定关于3,不允许直接链接到yo chrome://url。在Firefox 31上测试时不会触发onload事件。这就是它的行为方式吗?有人知道Firefox插件的“src”等价物吗?@donohoe:我真的不喜欢greasmonkey这个想法。只有当页面完成加载时,才会加载脚本。在许多网站上,页面加载永远不会结束,因此脚本永远不会启动(这是greasmonkey设计)。将更细粒度的控件和Opera人员放在过去是很重要的(他们不再这样做了:-/)。如果用户需要等待50分钟才能执行脚本,那么他们可能会非常生气。