控制Firefox部分的客户端jar

时间:2014-06-18 18:21:29

标签: java html firefox firefox-addon

我是一名Java程序员。我想编写一个客户端Java程序,该程序添加到Firefox以对从特定远程网站接收的HTML执行操作,然后在用户浏览器中显示HTML。客户端Java程序必须:

  1. 在本地(最终用户)计算机上找到并读取特定文件。
  2. 检查Firefox请求的网页的网址。
  3. 如果通过Firefox请求的网址包含特定域名:
    1. 遍历HTML文字,查找startcodeendcode
    2. startcodeendcode之间剪切字符串。
    3. 使用本地电脑上的文件信息,在startcodeendcode之间转换字符串。
    4. 使用转换后的字符串替换startcodeendcode之间的字符串。
    5. 允许Firefox浏览器窗口显示修改后的HTML。
  4. 基本上,Java程序将截取来自特定网站的传入HTML并在内容显示在用户屏幕上之前更改内容。我该如何编写这类程序?

    当然,我对运行此程序的计算机具有管理权限。但我以前从未写过浏览器添加。我想用Java编写它,但代码需要始终在客户端计算机上。代码永远不会出现在服务器上。我不知道从哪里开始这个项目。

2 个答案:

答案 0 :(得分:2)

@Athafoud一般是正确的。没有浏览器支持Java开箱即用。

相反:

  • 您可以在Javascript中为Firefox,Chrome,Safari,Opera编写浏览器扩展程序。例如。 有一个链接列表,可以帮助您开始使用Firefox扩展开发。
  • 您还可以使用js-ctypesXPCOM在C / C ++(在某种程度上)为Firefox编写浏览器扩展程序。
  • 您可以通过NaCL APIs
  • 为Chrome编写一些有限的C ++内容
  • 您可以为支持Java插件的浏览器编写Java Applet,并将它们捆绑在一起并在扩展中编写脚本(在某种程度上),但这是PITA。

Firefox扩展API是最强大的,因为Firefox可以做任何事情,扩展也可以做(包括调用外部库)。其他浏览器具有更有限的可扩展性/面向扩展的API(由于架构问题,有时以安全性为名,尽管这种大胆的安全声明是......好吧,粗体)。

至于您在问题中提出的特殊要求:

  • Firefox扩展能够转换原始HTTP响应(虽然这有点麻烦),以及一旦解析HTML(来自javascript)的DOM。 Firefox可以读/写文件系统中的所有文件(当然,遵循操作系统级别的ACL)。
  • Chrome扩展程序are not capable of transforming raw HTTP responses ATM,但您可以在解析后修改DOM。此外,IIRC Chrome 无法默认读取任意文件,但您可以手动启用读取权限。

答案 1 :(得分:1)

我不认为您可以使用本机java编写firefox插件。你可以使用javascript。一个好的起点是Mozilla documentation网站。

这里还有一个很好的指南shortest-tutorial-for-firefox-extension,它有点陈旧,SDK已经改变,但我认为这是一个好的开始。

来自mozzila本身的更新how-to-develop-firefox-extension