FireFox调用本地应用

来源:互联网 发布:怎样在淘宝整点抢衣服 编辑:程序博客网 时间:2024/06/02 02:51

最近由于项目需要,对FireFox调用本地应用进行研究,现在将研究成果发布出来供大家参考,不完善的部分希望大家指出,我会补充。

FireFox可以javascript编程扩展浏览器的功能,扩展解决方案包括Add-ons,WebExtension,Add-ons是比较老的版本,现在已经被WebExtension替代了,当然Add-ons还可以用。WebExtension是一个通用的标准,不仅在FireFox上可以用,在chrome,Edge,Opera上也支持。

本文只是介绍调用本地应用的功能,如果有其他他需求可以参阅:https://developer.mozilla.org/zh-CN/Add-ons/Overlay_Extensions

        WebExtension支持在浏览器上添加操作,比如添加按钮,添加菜单等,然后调用后台的代码完成特定的行为,比如调用本地应用。调用方式如下:

        

详细内容参阅:https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Native_messaging

上面的方案解决了浏览器调用本地应用的问题,但是我们需要在网页上的操作调用本地应用,所以还需要研究网页怎么与后台进行交互。这就涉及到了Content scripts,Content script可以与页面交互,Content Script 只能访问WebExtension APIS 的一个小的子集(不包括调用本地应用的API),但是它们可以使用通信系统与后台脚本进行通信,从而间接的访问WebExtension APIS。详细内容参阅:https://developer.mozilla.org/zh-CN/Add-ons/WebExtensions/Content_scripts

通过上面的分析,页面调用本地应用分为三层:

1,网页

2,Content scripts

3,后台脚本

       网页通过Content scripts间接调用后台脚本完成调用本地应用的功能。

       之所以这么复杂,是由于浏览器安全的需要。

       通过这种方式可以直接启动本地应用,但是如果本地应用需要一些参数,那么就要编写一个中间的本地应用,用于接收参数,并启动最终应用。中间本地应用可以用各种语言编写,比如python,C#,C++,java。一开始打算采用C++编写,但是后来发现并不兼容所有的操作系统,有的操作系统还需要另外安装链接库,链接库还跟操作系统版本有关,适配起来很麻烦,不通用。C#和java需要安装的东西太大,而且C#在linux上不好安装。通过上述分析最后采用python,linux上一般都带用python,python安装包比较小,而且跟操作系统版本无关,没有适配问题。NativeMessaging中有现成的python脚本。

上述就是fireFox调用本地应用的总结,还有一个问题,就是使用问题,要使用这个功能,需要下载插件,python,最终应用,还得注册中间应用,对于用户来说,这些操作有些繁琐,如果大家有好的办法,请不吝赐教。


阅读全文
0 0
原创粉丝点击