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浏览器,目前其他火狐,谷歌等浏览器还没有找到自动安装的方法;
时间: 2024-10-11 04:48:27