支持多浏览器的方法及插件的制作方法

文档序号:6383614阅读:121来源:国知局
专利名称:支持多浏览器的方法及插件的制作方法
技术领域
本发明涉及计算机科学技术领域,特别涉及一种支持多浏览器的方法及插件。
背景技术
目前,网站上的插件多数只支持IE系列浏览器,这一类插件一般采用ActiveX技术开发。由于ActiveX是微软封闭的控件标准,因此不支持chrome、firefox等非IE内核浏览器。还有一些网页插件采用NPAPI开发,支持chrome、firefox等非IE内核浏览器。但是由于历史原因,IE自5.0以后的浏览器就不再支持NPAPI,因此这类插件在IE5.0版本之后的IE浏览器上无法使用。对于上述两类插件,由于都只支持一类浏览器,因此不管是ActiveX技术还是NPAPI技术都无法解决浏览器兼容性问题。另外支持NPAPI的各个浏览器在插件标准上也不是无差别的统一,因此也无法保证采用NPAPI开发的插件在所有支持NPAPI的浏览器上面都能正常工作。为了解决上述问题,有些网站将上述两种方案结合,针对不同的浏览器开发两个插件,页面使用插件时根据浏览器类型选择使用相应的插件,这种方案满足了支持多浏览器的需求。但是,由于不同的插件的工作机制不一致,导致开发出来的插件在工作方式上也存在差异,这样引出的一个问题是,插件与浏览器页面交互的形式不一致,从而导致浏览器页面必须针对不同的插件编写代码,增加了浏览器页面开发的复杂度,加重了前端开发人员的工作量,延长了开发周期。另外,这种方法将开发出两个插件,功能代码将被两次编译进入到插件中,而插件的功能代码体积一般占整个插件体积的比例较大,这样有一份同样的功能代码会无端增大插件的体积。此外,还有一些开源的框架,如FireBreath,封装了浏览器在插件标准上的差别,在此框架上开发的插件能支持多种浏览器。该框架解决了浏览器兼容问题,但是此类框架需要封装较多内容,导致在此基础上开发出的插件的体积非常庞大,并且包含许多不需要的功能而给插件带来额外的负担。

发明内容
本发明的目的旨在至少解决所述技术缺陷之一。为此,本发明的一个目的在于提出一种支持多浏览器的方法,该方法能够解决插件对各种浏览器的兼容性问题,同时减小插件的体积。本发明的另一个目的在于提出一种支持多浏览器的插件。为达到所述目的,本发明一方面的实施例公开了一种支持多浏览器的方法,包括以下步骤在浏览器中显示页面,其中,所述页面具有至少一个插件,且所述插件包括第一插件模块、第二插件模块和功能模块,所述页面分别通过所述第一插件模块和第二插件模块与所述功能模块相互通信;所述页面获得所述浏览器的类型;所述页面根据所述浏览器的类型选择所述第一插件模块或第二插件模块;以及所述页面通过选择的所述第一插件模块或第二插件模块与所述功能模块相互通信。根据本发明实施例的支持多浏览器的方法,通过将插件分为两个层次并提供支持不同插件标准的两个插件模块解决了网页插件的浏览器兼容问题,并且由于未采用任何其他插件框架,因此插件的大小完全被功能代码有效利用,插件的体积较小,可以快速完成下载安装,用户体验好。为达到所述目的,本发明另一方面的实施例公开了一种支持多浏览器的插件,包括插件层,所述插件层包括第一插件模块和第二插件模块,所述插件层用于与浏览器的页面进行交互;以及功能层,用于与所述插件层进行通信并实现插件的功能逻辑,其中,所述页面根据所述浏览器的类型选择所述第一插件模块或第二插件模块,并通过选择的第一插件模块和第二插件模块与所述功能层通信。根据本发明实施例的支持多浏览器的插件,通过将插件分为插件层和功能层并在插件层提供支持不同插件标准的两个插件模块解决了网页插件的浏览器兼容问题,并且由于未采用任何其他插件框架,因此插件的大小完全被功能代码有效利用,插件的体积较小,可以快速完成下载安装,用户体验好。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。


本发明所述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中图1为根据本发明一个实施例的支持多浏览器的方法的流程图;图2为根据本发明一个实施例的支持多浏览器的插件的结构示意图;和图3为根据本发明另一个实施例的支持多浏览器的插件的结构示意图。
具体实施例方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底” “内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。在本发明的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解所述术语的具体含义。下面参考附图描述根据本发明实施例的支持多浏览器的方法。
一种支持多浏览器的方法,包括以下步骤在浏览器中显示页面,其中,页面具有至少一个插件,且插件包括第一插件模块、第二插件模块和功能模块,页面分别通过第一插件模块和第二插件模块与功能模块相互通信;页面获得浏览器的类型;页面根据浏览器的类型选择第一插件模块或第二插件模块;以及页面通过选择的第一插件模块或第二插件模块与功能模块相互通信。图1为根据本发明实施例的支持多浏览器的方法的流程图。如图1所示,根据本发明实施例的支持多浏览器的方法包括下述步骤。步骤S101,在浏览器中显示页面,其中,页面具有至少一个插件,且插件包括第一插件模块、第二插件模块和功能模块,页面分别通过第一插件模块和第二插件模块与功能模块相互通信。在本发明实施例中,将插件分为两层,一层是插件层,包括第一插件模块和第二插件模块,另一层是功能层(即功能模块)。插件层位于浏览器和功能层之间,负责与页面进行交互。功能层负责实现插件的功能。插件层的具体实现对于功能层来说是透明的,通常功能层对插件层提供一些接口,这些接口被插件层使用,从而实现页面与功能层之间的间接交互。目前主流的浏览器的插件的支持上可分为两类标准一类是IE内核浏览器插件标准,支持这种标准的浏览器主要包括IE系列浏览器以及其他以IE为内核的浏览器;另一类是NPAPI插件标准,支持这种标准的浏览器主要包括firefox、chrome、opera、safari等浏览器。因此,在本发明的实施例中,插件层提供两套插件层组件(第一插件模块和第二插件模块),一个是ActiveX开发插件,支持IE内核浏览器;一个是NPAPI开发插件,支持其他非IE内核且提供NPAPI的浏览器。应理解,插件模块的个数可以根据浏览器的插件标准扩容为三个或更多个以满足各种浏览器的兼容。此外,在本发明实施例中,功能层被编译成动态链接库被具体的插件层使用,而不是被编译进入多个不同的插件,从而可以有效地降低插件的体积。步骤S102,页面获得浏览器的类型。步骤S103,页面根据浏览器的类型选择第一插件模块或第二插件模块。在本发明的一个实施例中,第一插件模块支持ActiveX开发插件,第二插件模块支持NPAPI开发插件。如果浏览器的类型为Firefox,则选择第二一插件模块;如果浏览器的类型为IE6. 0,则选择第二插件模块。步骤S104,页面通过选择的第一插件模块或第二插件模块与功能模块相互通信。具体地,页面通过选择的第一插件模块或第二插件模块调用功能模块,或者通过选择的第一插件模块或第二插件模块对功能模块进行事件通知。在本发明实施例中,插件层通常提供一些功能接口给页面以便页面调用插件的功能,同时页面也会在插件上注册一些回调函数,实现事件通知机制。为此,插件层中抽象出一个插件抽象层,它定义了浏览器中的页面与插件的交互形式,使得页面与插件的交互保持一致,主要是页面对调用插件接口的形式和事件通知。其中,页面对调用插件接口的调用统一形式为对象.函数(参数)。在这点上NPAPI插件和ActiveX插件是一致的,抽象插件层无需针对接口调用做技术修正。而在事件通知机制上,NPAPI插件和ActiveX插件在事件注册函数上存在区别,具体地,本发明实施例中的NPAPI插件的事件注册函数为自定义并开发的接口,且在插件内部维护一个事件与事件处理函数的映射队列,而ActiveX插件的事件注册函数则无需开发者开发,ActiveX插件本身提供了 attachEvent这样的函数来实现事件注册。另外在回调事件处理javascript函数时,如果NPAPI插件和ActiveX插件给事件处理javascript函数传递的参数为数组类型,这种参数的使用存在一些区别,具体地ActiveX插件传递的数组参数具有length属性,可以直接获取数组的长度,也可以使用[]操作符,而NPAPI插件传递的参数则不具有这些功能。因此,需要抽象层增加一些内容保证事件注册和回调参数有一致的使用形式。具体地,为了解决NPAPI插件和ActiveX插件的事件注册函数的差异,在本发明的一个实施例中,抽象插件层提供一个抽象类EventMangger, EventMangger对页面提供统一的AttachEvent (与attachEvent不同,以免冲突)接口与DetachEvent接口,用于注册/注销事件与事件处理函数。在EventMangger内部维护一个事件与事件处理函数映射的队列,当页面调用AttachEvent注册事件时,将事件与事件处理函数添加到队列中;当页面调用DetachEvent时,将事件与事件处理函数从队列中删除此外,为了解决回调参数在使用上的差异,在本发明的一个实施例中,自定义NPAPI插件传递的数组类型参数,并添加如length属性的属性,从而使得不同的插件传递的参数在使用方法上保持一致。类似地,其他的ActiveX插件具备而NPAPI插件不具备的属性也可通过这种方式来弥补使用上的不一致。根据本发明实施例的支持多浏览器的方法,通过将插件分为两个层次并提供支持不同插件标准的两个插件模块解决了网页插件的浏览器兼容问题,并且由于未采用任何其他插件框架,因此插件的大小完全被功能代码有效利用,插件的体积较小,可以快速完成下载安装,用户体验好。下面参考附图详细描述根据本发明实施例的支持多浏览器的插件。一种支持多浏览器的插件,包括插件层,包括第一插件模块和第二插件模块,用于与浏览器的页面进行交互;以及功能层,用于与插件层进行通信并实现插件的功能逻辑,其中,页面根据浏览器的类型选择第一插件模块或第二插件模块,并通过选择的第一插件模块或第二插件模块与功能层通信。图2为根据本发明实施例的支持多浏览器的插件的结构示意图。如图2所示,根据本发明实施例的支持多浏览器的插件包括插件层I和功能层2,插件层I包括第一插件模块11和第二插件模块12。插件层I位于浏览器和功能层2之间,用于与浏览器的页面进行交互。功能层2用于与插件层I通信并实现插件的功能逻辑。具体地,页面根据浏览器的类型选择第一插件模块11或第二插件模块12,并通过选择的第一插件模块11或第二插件模块12与功能层2通信。目前,主流的浏览器的插件的支持上可分为两类标准一类是IE内核浏览器插件标准,支持这种标准的浏览器主要包括IE系列浏览器以及其他以IE为内核的浏览器;另一类是NPAPI插件标准,支持这种标准的浏览器主要包括firefox、chrome、opera、safari等浏览器。因此,在本发明的一个实施例中,第一插件模块11支持ActiveX开发插件,第二插件模块12支持NPAPI开发插件。在本发明的一些实施例中,页面通过选择的第一插件模块11或第二插件模块12调用功能层2 ;或者,页面通过选择的第一插件模块11或第二插件模块12对功能层2进行事件通知。为此,在本发明的一个实施例中,如图3所示,插件层I还包括抽象插件模块13。抽象插件模块13用于定义第一插件模块11和第二插件模块12对功能层2的调用以及第一插件模块11和第二插件模块12对功能层2的事件通知机制。由此,使得页面与插件的交互保持一致。具体的实现可参照上述实施例的描述,此处不再详细描述。在本发明的一个实施例中,功能层2还对插件层I提供一些接口(图中未示出),这些接口被插件层I使用,从而实现页面与功能层的间接交互。根据本发明实施例的支持多浏览器的插件,通过将插件分为插件层和功能层并在插件层提供支持不同插件标准的两个插件模块解决了网页插件的浏览器兼容问题,并且由于未采用任何其他插件框架,因此插件的大小完全被功能代码有效利用,插件的体积较小,可以快速完成下载安装,用户体验好。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对所述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
权利要求
1.一种支持多浏览器的方法,其特征在于,包括以下步骤 在浏览器中显示页面,其中,所述页面具有至少一个插件,且所述插件包括第一插件模块、第二插件模块和功能模块,所述页面分别通过所述第一插件模块和第二插件模块与所述功能模块相互通信; 所述页面获得所述浏览器的类型; 所述页面根据所述浏览器的类型选择所述第一插件模块或第二插件模块;以及 所述页面通过选择的所述第一插件模块或第二插件模块与所述功能模块相互通信。
2.如权利要求1所述的支持多浏览器的方法,其特征在于,所述页面通过选择的所述第一插件模块或第二插件模块与所述功能模块相互通信进一步包括 所述页面通过选择的所述第一插件模块或第二插件模块调用所述功能模块; 或者,所述页面通过选择的所述第一插件模块或第二插件模块对所述功能模块进行事件通知。
3.如权利要求1或2所述的支持多浏览器的方法,其特征在于,所述页面包括抽象插件层,所述抽象插件层统一所述页面对所述第一插件模块和第二插件模块的调用以及所述第一插件模块和第二插件模块对所述功能模块的事件通知机制。
4.如权利要求1至3任一项所述的支持多浏览器的方法,其特征在于,所述第一插件模块支持ActiveX开发插件,所述第二插件模块支持NPAPI开发插件。
5.一种支持多浏览器的插件,其特征在于,包括 插件层,所述插件层包括第一插件模块和第二插件模块,所述插件层用于与浏览器的页面进行交互;以及 功能层,用于与所述插件层进行通信并实现插件的功能逻辑, 其中,所述页面根据所述浏览器的类型选择所述第一插件模块或第二插件模块,并通过选择的所述第一插件模块或第二插件模块与所述功能层通信。
6.如权利要求5所述的支持多浏览器的插件,其特征在于,所述页面通过选择的所述第一插件模块或第二插件模块与所述功能层通信,具体包括 所述页面通过选择的所述第一插件模块或第二插件模块调用所述功能层; 或者,所述页面通过选择的所述第一插件模块或第二插件模块对所述功能层进行事件通知。
7.如权利要求6所述的支持多浏览器的插件,其特征在于,所述插件层还包括抽象插件模块,用于定义所述第一插件模块和所述第二插件模块对所述功能层的调用以及所述第一插件模块和所述第二插件模块对所述功能层的事件通知机制。
8.如权利要求5所述的支持多浏览器的插件,其特征在于,所述功能层包括接口,所述功能层与所述插件层通过所述接口进行通信。
9.如权利要求5至8任一项所述的支持多浏览器的插件,其特征在于,所述第一插件模块支持ActiveX开发插件,所述第二插件模块支持NPAPI开发插件。
全文摘要
本发明提出一种支持多浏览器的方法及插件。其中,方法包括在浏览器中显示页面,其中,所述页面具有至少一个插件,且插件包括第一插件模块、第二插件模块和功能模块,页面分别通过第一插件模块和第二插件模块与功能模块相互通信;页面获得浏览器的类型;页面根据浏览器的类型选择第一插件模块或第二插件模块;以及页面通过选择的第一插件模块或第二插件模块与功能模块相互通信。本发明通过将插件分为两个层次并提供支持不同插件标准的两个插件模块解决了网页插件的浏览器兼容问题,并且由于未采用任何其他插件框架,因此插件的大小完全被功能代码有效利用,插件的体积较小,可以快速完成下载安装,用户体验好。
文档编号G06F9/54GK103064886SQ20121052665
公开日2013年4月24日 申请日期2012年12月7日 优先权日2012年12月7日
发明者金季强 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1