6.二种方案比较


6.1 纯 ppapi 方案

  硕正1.0.107.0版本完善了纯 ppapi 插件技术, 并通过 dynaload.js 的进一步封装, 使 ppapi 语法完全兼容 npapi 和 IE, 这样页面也就能轻易兼容多种浏览器, 而不必书写2套代码,就像硕正官网的在线演示那样。
  我们发现, 纯 ppapi 方案运行更加稳定、流畅, 由于完全是在 Chrome 环境下运行,整体性能也好于内嵌 IE 方案.
  在纯 ppapi 中使用插件的 GrayWindow 全局函数, 可以使插件不会遮挡其它页面元素, npapi 和 IE、内嵌IE都做不到这一点.
  但是纯 ppapi 方案的缺陷也是显而易见的, 比如在 “4.内嵌 IE 方案” 文中提到的二种功能, 就无法实现,我们短期内也找不出更好的替代方法。
  此外, 纯 ppapi 开发的页面最好不要使用 alert, 因为弹出提示容易被插件遮挡, 应该用插件的全局函数 messageBoxFloat 代替之。

6.2 内嵌IE方案

  硕正套件的功能几乎全部都具备, 这恐怕是它唯一的优势了.
  由于插件内部嵌入了一个IE核心,略显厚重, 消耗内存资源肯定要多一些, 性能也逊色于纯 ppapi 方案.
  内嵌IE方案需要一个 “外部页面” 来配合使用, 这肯定要额外多一分维护工作。
  此外, 内嵌IE还有一个问题, 如果页面中含有 <a href=...> 这样的超链接, 弹出的将是新的 IE 浏览器窗口, 而不是 Chrome 选项卡.

6.3.其它说明

6.3.1 Windows 7 或以前版本的问题

  在 Windows 7 或更早版本中, 如果拖动浏览器窗口, 发现插件位置不会立即跟随变化, 大约有半秒钟的粘滞; 如果页面很长需要滚动条, 滚动条滚动时, ppapi 插件会伸出浏览器窗口外:

  Windows 8 及以后的版本就没有这个问题了, Windows 7下尚无解决办法。
  如果 ppapi 是内嵌 IE, 建议把外部页面的滚动条去掉, 内部的 IE 页面中的硕正控件(加载项)是没有这个问题的。

6.3.2 http-equiv="MSThemeCompatible"问题

  如果是用内嵌 IE 方案, 建议内部页面的 head 中都增加这么一行:
<meta http-equiv="MSThemeCompatible" content="yes">
  如果不加这一行, 很可能内部页面的 html 元素(如 button )的外观都呈现 Win2000 过时的风格,而不是操作系统默认的主题风格。