让Firefox支持ActiveX控件「建议收藏」

让Firefox支持ActiveX控件「建议收藏」让Firefox支持ActiveX控件  疑难集锦字号  我现在用Firefox作为主力浏览器,Firefox下能否支持ActiveX插件?所为对某些包含ActiveX控件的网站并不兼容,不知道怎么做能让Firefox支持ActiveX呢?      答:两种方案:一种是使用IETab这个插件,在Firefox下直接调用IE浏览器内核进行浏览;      另一种是使

大家好,又见面了,我是你们的朋友全栈君。

让Firefox支持ActiveX控件  

疑难集锦字号

  我现在用Firefox作为主力浏览器,Firefox下能否支持ActiveX插件?所为对某些包含ActiveX控件的网站并不兼容,不知道怎么做能让Firefox支持ActiveX呢?  

    答:两种方案:一种是使用IETab这个插件,在Firefox下直接调用IE浏览器内核进行浏览;  
  
  另一种是使用npActivexPlugin,让Firefox直接支持ActiveX。这两款Firefox扩展的下载地址分别是http://ietab.mozdev.org/和http://forums.mozine.cn/index.php?showtopic=2350,选择一款适合你自己的就可以了。 

 

XPI是什么?

firefox中的xpi实际上类似于IE中的插件或扩展(如Flash插件等).
格式一般为.Zip, 由XUL、Javascript、CSS、HTML和图片等构成.

Firefox扩展包(Firefox Extensions)是指对为了增强在Mozilla Firefox中浏览网页所做的一些小改进的名字。他们也许只是 可以为Mozilla Firefox增加新的功能一个小程序或者插件。您可以在Extensions page上看一看各种扩展包列表。

  关于扩展包的最伟大的好事则是它使得Mozilla Firefox小巧而不臃肿。任何人可以根据自己需要安装适当的扩展包。

==================================================================
如何安装Firefox扩展文件?  

扩展文件通常是xpi文件格式(以.xpi结尾).有三种安装方法:

1,直接拖拽到Firefox浏览器的窗口里或扩展窗口里

2,点击  ‘菜单”–“工具”–”扩展”,把.xpi文件拖进弹出窗口里,稍后就可以看到Firefox会询问你是否要安装这个插件,点击是,并重启Firefox浏览器

3,鼠标右键点xpi文件,选打开方式,在打开方式里选firefox,设置关联。以后只要双击xpi文件就自动安装了 现有一个activeX控件,非常简单,只是访问本地DLL,并被页面的JS脚本调用。现需要将功能迁移到webkit浏览器支持的插件形式,希望可以再chrome,搜狗,ff等浏览器上使用。火狐不支持ActiveX控件,需要使用标准的NPAPI插件。

  
  
  

让Firefox支持ActiveX控件  

2009-07-03 13:38:45|  分类: 疑难集锦|字号 订阅

  我现在用Firefox作为主力浏览器,Firefox下能否支持ActiveX插件?所为对某些包含ActiveX控件的网站并不兼容,不知道怎么做能让Firefox支持ActiveX呢?  

    答:两种方案:一种是使用IETab这个插件,在Firefox下直接调用IE浏览器内核进行浏览;  
  
  另一种是使用npActivexPlugin,让Firefox直接支持ActiveX。这两款Firefox扩展的下载地址分别是http://ietab.mozdev.org/和http://forums.mozine.cn/index.php?showtopic=2350,选择一款适合你自己的就可以了。 

 

XPI是什么?

firefox中的xpi实际上类似于IE中的插件或扩展(如Flash插件等).
格式一般为.Zip, 由XUL、Javascript、CSS、HTML和图片等构成.

Firefox扩展包(Firefox Extensions)是指对为了增强在Mozilla Firefox中浏览网页所做的一些小改进的名字。他们也许只是 可以为Mozilla Firefox增加新的功能一个小程序或者插件。您可以在Extensions page上看一看各种扩展包列表。

  关于扩展包的最伟大的好事则是它使得Mozilla Firefox小巧而不臃肿。任何人可以根据自己需要安装适当的扩展包。

==================================================================
如何安装Firefox扩展文件?  

扩展文件通常是xpi文件格式(以.xpi结尾).有三种安装方法:

1,直接拖拽到Firefox浏览器的窗口里或扩展窗口里

2,点击  '菜单"--"工具"--''扩展'',把.xpi文件拖进弹出窗口里,稍后就可以看到Firefox会询问你是否要安装这个插件,点击是,并重启Firefox浏览器

3,鼠标右键点xpi文件,选打开方式,在打开方式里选firefox,设置关联。以后只要双击xpi文件就自动安装了 

 Chrome源码剖析 
 

原文:http://www.cnblogs.com/duguguiyu/archive/2008/11/05/1326777.html

1. NPAPI

为了紧密的与各个开源浏览器团结起来,共同抗击IE的垄断,Chrome的插件,也遵循了NPAPI(Netscape Plugin Application Programming Interface)标准,支持这个标准的浏览器需要实现一组规定的API供插件调用,这组API形如NPN_XXX,比如NPN_GetURL,插件可以利用这些API进行二次开发。而NPAPI插件以一个Dll之类的作为物理载体(windows下dll,linux下是so...)进行提供,里面同样也实现了一组规定的API。形式包括NP_XXXNPP_XXX,NP_XXX是系统需要默认调用的方法,用于认知这个插件,比如NP_Initialize, 而NPP_XXX是用于插件完成一些实际功能,比如NPP_New。。。

所有的插件dll都需要放置在指定目录下(根据操作系统的不同而不同...),每个插件可以处理一种或多种MIME格式的数据,比如application/pdf,说明该插件可以处理pdf相关的文档。在Chrome中键入about:plugins,可以查看当前Chrome中具有的插件信息。。。

NPAPI是一个很经典的插件方案,用dll进行注入,用协定的API进行通信,用字符串描述插件能力。插件宿主(在这里就是浏览器...),会根据能力描述,动态加载插件,并负责插件调用的流程和生命周期管理。而插件中,负责真实逻辑的处理,并可以构造UI与用户交流。以此类方式实现的插件系统,往往是处理的逻辑比较固定适用范围一般(用API写死了逻辑...),但可扩展性不错(用字符串描述能力,可无限扩展...)。。。

在Chrome中nphostapi.h中,定义了所有NPAPI相关的函数指针和结构,这个文件放置在glue目录下,如果看过前面碰过的文章就知道,在WebKit内肯定也有一套相同的东西;在npapi.h/.cc中,提供了Chrome浏览器端的NPN_XXX系列函数的实现;每一个插件物理实例,用PluginLib类来表示,而每一个插件的逻辑实例,用PluginInstance类来表示。这个概念牵强附会的可以用windows中的句柄来类比,当你想操作一个内核对象,你需要获得一个内核对象的句柄,每个进程中的句柄肯定不相同,但后面的内核对象却是同一个,内核对象的生命周期通过句柄的计数来控制,有人用则或,无人用则死(当然这个类比相当的牵强,主要是想说明引用计数和逻辑与物理的关系,但一个关键性的区别在于,PluginLib与PluginInstance都是在一个进程内的,不能跨越进程边界...)。在Chrome中,PluginLib负责加载和销毁一个dll,拿到所有导出函数的函数指针,PluginInstance对这些东西进行了封装,可以更好的来调用。。。

关于NPAPI的更多细节,Chrome并没有提供任何文档,但是,各个先驱的浏览器们都提供了大量丰富的文档。比如,你可以到 这里,查看firefox中的NPAPI文档,基本通用。。。

2. Chrome的多进程插件模型

Chrome的插件模型,与早先的浏览器的最大不同,是它采用了多进程的方式,每一个插件,都有一个单独的进程来承载(Shift + Esc打开Chrome进程管理器,可以看到现在已经加载的插件进程...)。当WebKit进行页面渲染的时候,发现了未知的MIME类型数据,它会告知给Browser进程,召唤它提供一个插件来解析。如果该插件还未加载,Browser会在指定目录中搜寻出具有此实力的插件(如果没有此类人才只能作罢...),并为它创建一个进程,让它负责所有的该插件相关的任务,然后建立起一个IPC通路,与它“保持通话”。这套流程一定不会太陌生,因为它与Render进程的创建大同小异换汤不换药。。。

Plugin进程与Render进程最大的区别在于,Render需要与Browser进程大量通信,因为它的HWND归Browser老大掌管着,相关所有内容都需要通信完成。但Plugin不需要与Browser频繁联系,它大部分的通信都是与Render进程发生的。如果Plugin与Render之间的通信,还需要走Browser中转一下,这就显得有些脱裤子放屁了,虽然Browser是大头,但不是冤大头,它不会干这种吃力不讨好的事情。他只是做了一回Render与Plugin间的媒婆而已。当Plugin与Browser建立好了IPC通路后,它会让Render建立一个新IPC通路,用以与Plugin通信,IPC的有名管道名,经由Browser通知给Plugin。完成名字协商后,Render与Plugin的通信关系就建立好了,它们之间就可以直接进行通信了。。。

整个通信模式,可以看 这里 。这是一个很标准的代理模式的应用,稍有了解的都可以跳过我后面会做的一段罗嗦的描述,一看官方文档中的图便能知晓。在Render进程端,WebPluginImpl是WebPlugin的一个子类,WebPlugin是供Webkit进行调用的一个接口,利用依赖倒置,实现了扩展。在Plugin进程端,实现了一个WebPluginDelegateImpl类,该类会调用PluginInstance的相关接口实现真实的插件功能。这样的话,只需要WebPluginImpl调用WebPluginDelegateImpl中的相应方法,就可以实现功能。但问题是WebPluginImpl与WebPluginDelegateImpl天各一方各处于一个进程,很显然,这里需要一个代理模式。这里沿用了COM的架构,Delegate + Stub + Proxy。WebPluginImpl调用代理WebPluginDelegateProxy,该代理会将调用转换成消息,通过IPC发送给Plugin进程,在Plugin端,通过WebPluginDelegateStub监听消息,并转换成对真实WebPluginDelegateImpl的调用,从而完成了跨进程的一个调用,反之亦然。。。

3. Chrome的可扩展性

总所周知,firefox通过三种方式进行自定义,插件、扩展和皮肤。其中,插件是使得浏览器能用,不会出现一大块一大块的无法显示的区域;扩展是使得浏览器好用,可以简单方便的进行功能的定制和个性化配置;皮肤是帮助浏览器变得好看,毕竟罗卜白菜,给有所爱。。。

与之对比,来看Chrome。Chrome有了插件,有了皮肤,但是没有扩展。这就意味着,你很难为Chrome定制一些特色的功能。目前,所有对Chrome的功能扩展,都是通过书签抑或是修改内核来实现的。前者能力太弱,后者开发起来太麻烦,容易出错不提,还必须要与时俱进,跟上版本的变化,并且还不能自由的选择或关闭。因此,这都不是长远之计,Chrome提供一套类似于firefox的扩展机制,也许才是正道。据传说,Chrome团队正在琢磨这件事,不知道最终会出来个怎么样的结果,是尽力接近firefox降低移植成本,还是另立门户特立独行,我想可以拭目以待一把。。。

在多进程模式下,Chrome的插件还有一个问题,前面提到过,就是关于UI控件的。由于NPAPI的标准,是允许插件创建HWND窗口的,这就使得当Plugin繁忙,且Browser进程发起HWND的同步的时候,主进程被挂起,这个浏览器停滞。在Render进程中,解决这个问题的思路是控制权限,不然Render创建HWND,到了Plugin中,这招不能使用,只能够使用另一招,就是监管。不停的检查Plugin是否太繁忙,无法响应,一旦发现,立即杀死该Plugin及其所处的页面。这就好比你想解决奶中有三氯氰胺的问题,要么控制奶源,不从奶站购买全部用自家的,要么加强监管,提高检查力度防止隐患。两种策略的优缺点一眼便知,依照不同环境采取不同策略即可。。。

总体说来,Chrome的可扩展性着实一般,不过Chrome还处于Beta中,我们可以继续期待。。。

本文链接:http://www.blueidea.com/tech/program/2009/6571.asp 让Firefox支持ActiveX控件「建议收藏」
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146688.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • 【Linux + Makefile】Makefile的高阶用法:解决C文件包含的头文件修改了,但C文件不重新编译的问题

    【Linux + Makefile】Makefile的高阶用法:解决C文件包含的头文件修改了,但C文件不重新编译的问题makefile的聪明之处。

  • Kali 2.0 使用 Reaver 的注意事项[通俗易懂]

    Kali 2.0 使用 Reaver 的注意事项[通俗易懂]1、刚一开始使用这条命令airmon-ngstartwlan0就可以开始了,需要注意的是,在Kali2.0里开启的不再是mon0了,而是wlan0mon,所以不要和Kali1.X的版本代码混淆2、Kali1.X的命令无效在Kali2.0中必须自己手动开启网卡的监听模式,所以在执行完上面之后,需要自己手动开启监听模式ifconfigwlan0mondowniwconfig

  • poe交换机连接方式_路由器接交换机怎么设置

    poe交换机连接方式_路由器接交换机怎么设置POE也被称为基于局域网的供电系统或有源以太网,有时也被简称为以太网供电,一个完整的POE系统包括供电端设备和受电端设备两部分。可能会有一些朋友对poe供电有一些疑问,这个在之前也有很多朋友问到过,那么,今天就由飞畅科技的小编来用图文为大家详细介绍下poe的几种供电方式和连接方法,感兴趣的朋友就一起来看看吧!poe交换机的4种连接方式一、交换机和终端都支持PoE这种方法PoE交换机直接通过网线接到支持PoE供电的无线AP和网络摄像机上,这种方…

  • pycharm导入本地已经安装好的库_pycharm调用模块怎么import不了

    pycharm导入本地已经安装好的库_pycharm调用模块怎么import不了一、添加国内源地址File(文件)–>Setting(设置)—>Projcet:xx(项目:xx)—>ProjectInterperter(Python解释器)—>点“+”—>管理存储库添加一个源地址:其他国内源地址参考:【Python】安装库的pip国内镜像二、添加包搜索包名,点击“安装包”…

  • android遍历的方法,android中遍历arrayList的四种方法

    android遍历的方法,android中遍历arrayList的四种方法一.在android中遍历arrayList有以下四种方法:1.实例:packagecom.mylist.test;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;publicclassArrayListDemo{publicstaticvoidmain(Stringargs[])…

  • pix是什么意思(pixio)

    本文会介绍cGAN和pix2pix,并在TensorFlow中使用pix2pix模型。一、cGAN原理使用GAN可以无监督生成全新的图片,比如使用GAN生成MNIST数字,虽然可以生成数字,但是不能生成确定的数字。如果希望控制生成的结果,例如生成数字1,此时就要用到cGAN了。cGAN的全称为ConditionalGenerativeAdversarialNet…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号