如何同时支持32位和64位组件自动安装

WebOffice文档控件技术交流和版本发布

如何同时支持32位和64位组件自动安装

帖子admin » 2014年 2月 11日 12:05 星期二

ActiveX可以通过浏览器自动从服务器安装到客户端,但是IE目前有32位版本和64位版本,对应的ActiveX也分为32位版本和64位版本;由于是两个版本的两个不同的ocx或者dll,如何同一套代码实现自动识别浏览器安装对应的版本?

因为版本升级需要进行修改代码中的版本号,所以我们从不把自动安装组件的代码直接写到前台页面中,而是写一个公用的js文件“Loadweboffice.js”,所有需要使用组件的页面直接引用即可。更新新版本时也只需要修改这一个js即可,减少以后的维护量和出错机会。

普通的Loadweboffice.js代码如下:
代码: 全选
      var s = "";
      s = "<OBJECT id=WebOffice1 align='middle' style='LEFT: 0px; WIDTH: 100%; TOP: 0px; HEIGHT: 100%'"
      + "classid=clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5";
      +" codebase='./weboffice.cab#Version=7,0,0,5'>"
      + "<PARAM NAME='_Version' VALUE='65536'>"
      + "<PARAM NAME='_ExtentX' VALUE='17410'>"
      + "<PARAM NAME='_ExtentY' VALUE='10874'>"
      + "<PARAM NAME='_StockProps' VALUE='0'>"
      + "</OBJECT>";
      document.write(s)


js中有可以对浏览器位数判断的方法:
代码: 全选
window.navigator.platform

他的返回值位:Win32或Win64
我们可以根据这一返回值让浏览器选择自动加载服务器目录下对应的ActiveX版本,做到自动识别32和64位。

修改后Loadweboffice.js代码如下:
代码: 全选
      var s = "";
      s = "<OBJECT id=WebOffice1 align='middle' style='LEFT: 0px; WIDTH: 100%; TOP: 0px; HEIGHT: 100%'"
      + "classid=clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5";
      var iev=window.navigator.platform;
      if(iev=="Win32"){
         +" codebase='./weboffice-x32.cab#Version=7,0,0,5'>"
      }else{
         +" codebase='./weboffice-x64.cab#Version=7,0,0,5'>"
      }
      + "<PARAM NAME='_Version' VALUE='65536'>"
      + "<PARAM NAME='_ExtentX' VALUE='17410'>"
      + "<PARAM NAME='_ExtentY' VALUE='10874'>"
      + "<PARAM NAME='_StockProps' VALUE='0'>"
      + "</OBJECT>";
      document.write(s)


注:自动安装仅限IE浏览器,目前其他火狐,谷歌等浏览器还没有找到自动安装的方法;
admin
Site Admin
 
帖子: 20
注册: 2013年 8月 5日 21:42 星期一

回到 OFFCIE在线编辑(weboffice)

在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客

cron