非IE内核浏览器如何支持activex插件
原文地址:https://blog.csdn.net/johnson2008t/article/details/46126605
之前在一个B/S项目中遇到一个需求,就是客户需要在页面上对报表的布局以及显示内容,进行自定义。最后决定使用activex技术来实现。众所周知,activex是微软搞得,因此只有ie内核的浏览器才能支持。像firefox(火狐)、Chrome、Apple Safari等非ie内核浏览器都不支持activex控件,这样就大大加大了系统使用的局限性。
因此考虑是不是可以让非ie内核浏览器也能支持activex控件,目前火狐等浏览器也有类似于activex控件的技术,那就是插件。所以最终决定以插件来作为连接activex的纽带,使非ie内核浏览器也可以支持activex控件。
确定了开发内容后,接下来就是上网了解相关方面的知识和技术。了解了NPAPI技术
NPAPI全称为:Netscape Plugin Application Programming Interface (NPAPI).
NPAPI 是一个很经典的插件方案,用dll进行注入,用协定的API进行通信,用字符串描述插件能力。浏览器会根据能力描述,动态加载插件,并负责插件调用的流程和生命周期管理。而插件中,负责真实逻辑的处理,并可以构造UI与用户交流。以此类方式实现的插件系统。
在firefox提供SDK的下载(https://developer.mozilla.org/en-US/docs/Gecko_SDK)
插件整体的实现思路就是通过插件调用OCX控件,也就是插件本身是衔接浏览器与OCX的一条桥梁,这样做就可以简单的实现非ie内核浏览器对OCX控件的支持。
经过一个多礼拜的开发,插件功能已经基本实现。并且为了方便使用已经打包成exe安装包。在项目中可以直接让用户下载安装。
安装效果图:
安装完成后,可以打开火狐浏览器在地址栏输入about:plugins,查看插件是否正确安装,
如下图所示,已经安装成功
下面测试一下插件效果,首先找一个可用的activex控件(本人用自己写的插件测试)html页面代码
<HTML>
<H1> 测试页面 </H1><p>
测试页面
<HR><center><P>
<br>
<object
id="Webplugin" //ocxid
TYPE="application/xhanhan-activex"
BORDER="0"
WIDTH="300"
HEIGHT="300"
clsid="{A2DC9F0E-1A2D-4C6D-BB2E-053BABE17134}"> //ocx插件id
</object>
</HTML>
将以上代码保存为html文件然后用火狐打开,效果如下图
可以看到activx控件已经可以在火狐下运行。目前插件已经在xp,vista、win7、win7(64)、windows server2003、
windows server2008等操作系统,以及火狐、Google Chrome、Opera、Apple Safari、遨游极速模式、360急速模
式下通过测试。支持市面上大部分主流浏览器。
目前安装包已经上传至下载频道
地址:http://download.csdn.net/detail/xhanhan/4544576
最新文章
- Linux 添加新磁盘,在线扩充空间
- 时间控件之赋值问题:datetimebox
- floyd算法
- #查看Linux的版本信息
- C++访问权限
- 关于TableView中出现deallocated问题
- DataTable 分页
- 至linuxNIC添加多个IP
- JS实现倒计时网页自动跳转(如404页面经常使用到的)
- SQL 2005/2008 连接SQL 2000报18456错误
- 58 同城 iOS 客户端 iOS11 及 iPhone X 适配实践
- 安装linux
- cross compile gdbserver
- 设计模式——适配器模式(type-c转3.5mm耳机口)
- 乘风破浪:LeetCode真题_029_Divide Two Integers
- C# WebBrowser设置代理
- MFC最基本动作(如创建窗口,点击取消等)函数的执行顺序
- Interllij IDEA常用快捷键
- [转]React Native 语言基础之ES6
- 洛谷P3724 [AH2017/HNOI2017]大佬(决策单调性)
热门文章
- C# 实现PNG文件的背景透明显示,解决动态显示闪烁问题 【转】
- HDU 2825 Wireless Password【AC自动机+DP】
- java代码在开始事务后,先做了一个查询,再insert,此时会报: java.sql.SQLException: could not retrieve transation read-only status server
- MySQL的IF函数
- MySQL源码升级
- 帝吧fb出征是什么原因?帝吧fb出征事情始末 帝吧出征FB打“台独” 台湾网民崩溃:巨人之墙爆了
- [算法][LeetCode]Spiral Matrix
- mv命令(转)
- 算法笔记_171:历届试题 小朋友排队(Java)
- vb sendmessage 详解1