这几天在寻找跨浏览器与本地进程交互的实现,刚看到chrome扩展的时候,无比兴奋,这个东西做起来简直太easy了,直接用JS就可以写扩展,还找了几个例子。结果感觉越来越不对劲,通过JS怎么实现与本地进程的交互呢?
于是又一轮Baidu & Google...
后来才发现,原来扩展和插件是两个不同的概念,而我需要的实现应该要插件才能完成。其二者区别如下:
1. 扩展是给能够给浏览器增加一些功能的附加软件,相当于是对浏览器实用功能的扩充。一般通过Javascript编制(当然可能还需要借助CSS、XUL等),运行在浏览器的Javascript引擎中,相对来说更安全,不易引起浏览器问题;而插件则是允许网站向用户提供内容并在浏览器中显示的程序,它是在浏览器之外需要独立编写的程序,一般是第三方提供的二进制文件,插件与浏览器在同一级别运行,所以更容易引起浏览器问题,如崩溃等。
2.扩展一般是压缩文件,如fixefox的插件是.xpi、chrome插件格式为.crx;而插件的格式通常是二进制文件,如windows下的插件一般是dll,linux下的插件一般是os格式。