【问题标题】:Get a specific argument with a firefox add-on使用 Firefox 插件获取特定参数
【发布时间】:2012-01-31 18:10:36
【问题描述】:

我正在尝试从 Java 程序中启动 firefox,到目前为止,我也知道如何使用选项来执行此操作。但我有兴趣发送一个特定的参数,以便 javascript 插件可以获取它。 例如,我使用命令 Runtime.getRuntime().exec("/usr/bin/firefox") 来启动 firefox,我的目标是使用类似 Runtime.getRuntime().exec("/usr/bin/firefox 12345"),其中 12345 是我的论点,并通过一个简单的插件获得它。

这可能吗?是否有另一种方法/方式可以在 Firefox 启动时将参数传递给附加组件?

提前致谢。

【问题讨论】:

    标签: java firefox arguments add-on args


    【解决方案1】:

    使用包含您的论点的 url 启动 firefox。

    【讨论】:

    • 这是个好主意,然后用插件捕获url并提取它。唯一的问题是起始页面将是无效页面。但这是一个不错的选择。谢谢。
    【解决方案2】:

    将其用作Runtime.getRuntime().exec(new String[] {"/usr/bin/firefox", "12345"})

    无法告诉您如何在 Firefox 插件中获取该参数。如果这就是您的主要问题,也许可以修改您的问题?

    【讨论】:

    • 谢谢你的回答,是的,我会这样做,这个问题不是最好的。
    【解决方案3】:

    我认为您的功能会破坏 Firefox 的安全模型。但是您可以使用一些命令,http://www.binaryturf.com/lesser-firefox-command-line-options/

    【讨论】:

    • 感谢您的遮阳篷,我想这样做,但由于这是在安全环境中应用,所以我认为我的安全性没有问题
    • 谢谢 Abhijeet Rastogi,这似乎是解决我的问题的好选择,我会对其进行测试,然后他们会发布结果。
    【解决方案4】:

    首先感谢大家的回答,大家帮助我完成这项工作。在对一些安全问题进行更多研究和思考之后,我最终使用 Java 进程构建器添加了一个具有我想要的值的环境变量:

        //Initiates the process i'm about to start.
        ProcessBuilder pb = new ProcessBuilder(args);
        //Gets the system environment.
        Map<String, String> env = pb.environment();
        //Register VAR with value Value as an evironment variable in this process context
        env.put("VAR", "Value");
        //Stats the process initiated in the 1st line.
        pb.start();
    

    因此,我可以运行应用程序并在其上下文中添加环境变量,现在我只想在我的 JavaScript 插件中访问它们,只需这样做:

        var env = Components.classes["@mozilla.org/process/environment;1"].getService(Components.interfaces.nsiEnvironment);
        var X = env.get('VAR');
    

    其中 X 将具有环境变量 VAR 中的值(之前在 Java 代码中定义);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 2019-05-26
      • 1970-01-01
      • 2017-01-19
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多