Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Firefox插件将javascript注入页面并运行它?_Javascript_Firefox_Firefox Addon - Fatal编程技术网

如何从Firefox插件将javascript注入页面并运行它?

如何从Firefox插件将javascript注入页面并运行它?,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,我正在编写一个Firefox扩展(插件),允许用户用文本和/或图形对任何页面进行注释,然后保存包含注释的页面图像。用例将是客户端查看网页、向网页添加反馈、保存此图像并通过电子邮件将其发送回web开发人员或测试人员,以获取GUI错误的带注释的屏幕截图等 在开发扩展之前,我用javascript编写了注释/绘图功能。此脚本向要绘制的页面添加一个元素,以及一个工具栏(在中),其中包含用于不同绘制工具的按钮(每个元素),例如线条、方框、椭圆、文本等。手动将其包含在页面中时,效果良好 我现在需要一种方法来

我正在编写一个Firefox扩展(插件),允许用户用文本和/或图形对任何页面进行注释,然后保存包含注释的页面图像。用例将是客户端查看网页、向网页添加反馈、保存此图像并通过电子邮件将其发送回web开发人员或测试人员,以获取GUI错误的带注释的屏幕截图等

在开发扩展之前,我用javascript编写了注释/绘图功能。此脚本向要绘制的页面添加一个
元素,以及一个工具栏(在
中),其中包含用于不同绘制工具的按钮(每个
元素),例如线条、方框、椭圆、文本等。手动将其包含在页面中时,效果良好

我现在需要一种方法来扩展到:

  • 将此脚本注入任何页面,包括我无法控制的页面
  • 这需要在用户调用扩展时发生,可以在页面加载之后进行
  • 在这个脚本中插入
    init()
    函数后,需要以某种方式运行画布和工具栏元素等,但我无法确定如何从扩展中调用它
  • 请注意,一旦插入,我就不需要使用此脚本与扩展交互(因为当用户按下扩展浏览器中的保存按钮时,扩展只需截取整个文档的屏幕快照(并删除添加的页面元素)。

    使用:

    允许您通过以下方式自定义网页的显示或行为 使用少量JavaScript

    数百个脚本,为各种各样的流行网站,已经开始 可于

    您也可以编写自己的脚本。退房 开始吧


    这就是我如何通过设置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分钟才能执行脚本,那么他们可能会非常生气。