4.原理
硕正套件是浏览器的插件或加载项,以 <Object ...> 形式展现于页面,而 <Object ...> 的书写格式在不同浏览器下是有差别的.
对于 IE 浏览器,下载的是 supcan2.cab 加载项(即ActiveX),其CLSID为:
619F1AC0-2644-40D3-9EB1-22F81C5FE097
对于64位 IE 浏览器,下载的是 supcan2.x64.cab 加载项(即ActiveX),其CLSID为:
11249C26-4BCD-4A74-B4D9-068936D77EFE
对于 Chrome 浏览器,插件采用 ppapi 接口,其type为:
application/x-ppapi-supcan
对于 Firefox、老版本的 Chrome 浏览器,将会自动分别下载 supcan.xpi、supcan.crx插件,该插件的type为:
application/supcan-plugin
浏览器的插件本身(比如 xpi、crx、cab 文件) 尺寸都很小,它们实现的功能也不多,只负责和浏览器打交道。 硕正套件真正的主角:一系列的功能组件并不在这个文件中,而是在几个独立的 Bin 压缩包中,这些组件是由该插件/加载项负责进行再一次的下载、安装的。
插件/加载项只是实现以下几个简单的功能:
1.下载、更新功能组件;
2.充当功能组件的容器;
3.与页面交互;
也就是说,该插件/加载项相当于是页面和功能组件之间的接口或桥梁,它将组件功能暴露给页面、供页面 JavaScript 操控。其原理图如下:
一个页面内可能有多个插件/加载项实例,每个插件/加载项实例中有一个功能组件的实例,页面、插件/加载项与功能组件的关系又可以以下图示例:
supcan2.cab、supcan.xpi、supcan.crx 这些插件文件很少升级,而一系列功能组件却可以在用户没有感觉的情况下升级,甚至是较频繁地升级,这就是采用这种设计框架的原因。