是的,在Firefox中,你当然可以做到这一点。
Firefox有4 types of extensions:(WebExtensions,Add-on SDK,Bootstraped,或Overlay/XUL)。
WebExtensions目前无法执行此操作,并且可能永远无法执行此操作(它们就像Google Chrome扩展程序一样)。 Mozilla强烈推动只有WebExtensions和Add-on SDK扩展。因此,这应该是一个附加SDK扩展。
您将需要使用system/child_process API,它是node.js child_process API的实现。您可以访问的API有如下一行:
var childProcess = require("sdk/system/child_process");
,您可以很容易create a new process与它使用stdin,stdout和stderr沟通。
您将不得不在主(后台)脚本中的子进程之间进行所有通信。所有communication with the webpage you are viewing必须在content script。您可以选择仅在URL匹配特定页面时使用内容脚本,或者使用page-mod(这将是没有任何任意网站能够运行命令的一部分)的域。您将需要pass messages back and forth through from your content script to your background script。
所以,基本上,通信会看起来像:
网页⟷内容脚本⟷背景脚本⟷子进程
这将是比较容易实现的消息传递方案,它允许网页运行任意命令,提供命令行参数,输入数据和接收输出数据等。