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 这些插件文件很少升级,而一系列功能组件却可以在用户没有感觉的情况下升级,甚至是较频繁地升级,这就是采用这种设计框架的原因。