【问题标题】:client side jar that controls parts of Firefox控制部分 Firefox 的客户端 jar
【发布时间】:2014-08-09 03:52:21
【问题描述】:

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

  1. 在其所在的本地(最终用户)计算机上找到并读取特定文件。
  2. 检查 Firefox 请求的网页的 URL。
  3. 如果通过 Firefox 请求的 URL 包含特定域:
    1. 遍历 HTML 文本以查找 startcodeendcode
    2. 切掉startcodeendcode之间的字符串。
    3. 使用本地电脑上文件中的信息在startcodeendcode 之间转换字符串。
    4. startcodeendcode 之间的字符串替换为转换后的字符串。
    5. 允许 Firefox 浏览器窗口显示修改后的 HTML。

基本上,Java 程序会拦截来自特定网站的传入 HTML,并在内容显示在用户屏幕上之前更改内容。我将如何编写这种程序?

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

【问题讨论】:

    标签: java html firefox firefox-addon


    【解决方案1】:

    @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 后的 DOM(来自 javascript)。 Firefox 可以读取/写入文件系统中的所有文件(当然,遵守操作系统级别的 ACL)。
    • Chrome 扩展 are not capable of transforming raw HTTP responses ATM,但您可以在解析后修改 DOM。此外,IIRC Chrome 无法默认读取任意文件,但您可以手动启用读取访问权限。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 必须有一些 Firefox API 可以使用任何语言访问,包括 Java。
      • 有一个(我记不起名字了),但据我所知,它已被废除。不知道这个方法能不能帮到你[link(]stackoverflow.com/questions/599291/…)还是这个link
      • 好的。如果这是真的,我不会致力于 Firefox。还有其他浏览器可以用 Java 编写这样的程序吗?
      • 据我所知,没有。在 chrome 中,如果有帮助,您可以使用 C 或 C++ 编写
      • 谢谢。我为你的链接添加了书签。让我们拭目以待,看看还有谁对此做出回应。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多