一种跨浏览器插件的自适应方法与流程

文档序号:11432116阅读:218来源:国知局
本发明涉及一种跨浏览器的插件,尤其涉及跨浏览器的标准插件,具体是指一种跨浏览器插件的自适应方法。
背景技术
::浏览器是指可以显示网页服务器或者文件系统的html文件(标准通用标记语言的一个应用)内容,并让用户与这些文件交互的一种软件。为提高浏览器的扩展性和易用性,浏览器需要提供插件支持用户访问互联网上丰富的多媒体信息。浏览器内核分为trident、gecko、webkit、presto。trident(又称为mshtml)是微软开发的一种排版引擎,其代表产品为internetexplorer,因此又称其为ie内核。gecko是一套开放源代码的、以c++编写的网页排版引擎,gecko内核代表作品mozillafirefox。webkit是一个开源项目,包含了来自kde项目和苹果公司的部分组件,它的特点在于源码结构清晰、渲染速度极快。缺点是对网页代码的兼容性不高,导致一些编写不标准的网页无法正常显示。主要代表作品有safari和google的浏览器chrome。presto是由operasoftware开发的浏览器排版引擎,支持随着dom及script语法的事件而对网页重新排版,主要代表作品为opera。浏览器插件技术主要用于扩充浏览器功能,主要有登记mime类型,在浏览器串口中开设自己的工作窗口,接受和处理键盘、鼠标实践,使用url从网络获取、传送数据,添加指向新的url热键或热区,控制html页面等。由于浏览器内核的多样性,不同的内核支持不同标准的插件。因为插件由不同的发行商进行插件开发发行,其技术水平良莠不齐,插件程序很可能与其它运行中的程序发生冲突,从而导致诸如各种页面错误,运行时间错误等等现象,阻塞了正常浏览,且不同的浏览器开发标准不一致,导致浏览器插件仅能在特定浏览器中运行,对于不同的浏览器需要发布不同的插件,无法做到插件的统一,同时在浏览器读取网页文件时,当网页文件存在格式或者其他错误无法被当前浏览器正常识别最终无法正常显示。技术实现要素:本发明提供一种跨浏览器插件的自适应方法,用于解决现有技术中存在的:浏览器在读取网页文件时,当网页文件存在格式或者编写错误而导致浏览器在渲染时无法正常显示的问题,为了解决上述技术问题,达到在无需更换网页文件的情况下,对网页文件的错误进行修改并能够被当前浏览器正常显示的技术效果,本发明通过下述技术方案实现:一种跨浏览器插件框架的自适应方法,包括标准浏览器插件,标准浏览器插件对浏览器读取网站的网页文件自适应,具体包括以下步骤:步骤1.1将所述标准浏览器插件载入当前浏览器;步骤1.2标准浏览器插件对当前浏览器内核进行访问并读取当前浏览器的信息;步骤1.3标准浏览器插件再对浏览器读取网站的网页文件进行解析,判断网页文件与当前浏览器是否兼容;步骤1.4标准浏览器插件再根据当前浏览器内核的类型对解析的网页文件进行一致性调整;步骤1.5浏览器将调整后的网页文件进行渲染显示。工作流程说明:因为插件由不同的发行商进行插件开发发行,其技术水平良莠不齐,插件程序很可能与其它运行中的程序发生冲突,从而导致诸如各种页面错误,运行时间错误等等现象,阻塞了正常浏览,且不同的浏览器开发标准不一致,导致浏览器插件仅能在特定浏览器中运行,对于不同的浏览器需要发布不同的插件,无法做到插件的统一,为了能够做到适应各个浏览器内型,具体开发的过程是首先定义统一的标准开发平台,标准的浏览器插件是通过标准开发平台开发而来,首先是在标准开发平台上创建标准浏览器插件,最后将标准浏览器插件发送至浏览器上,标准开发平台自带有解析器和类加载器的标准框架,所述标准框架内设置有插件结构,插件结构包括至少一个根目录,在所述根目录下并列建立有至少四个子目录,分别为通用程序集、插件文件、库文件、通用配置,其中通用程序集里面放置有标准浏览器插件常用的通用程序,通用配置内放置有标准浏览器插件常用的配置,库文件内放置有标准浏览器插件常用的库文件等,子目录中的插件文件下还设置有多个插件功能模块,在每一个的功能模块中都含有4个单元,分别是程序集、脚本文件、网页文件、库文件,程序集的作用是定义插件的属性,例如名称、版本、类型等信息,网页文件是具体实现插件的功能,库文件是跟浏览器互动的脚本文件,用户可以在这个4个单元内编写相应程序代码,具体是指的在网页文件下进行编写,从而形成相应的插件功能,标准框架的类加载器根据通用配置对插件文件、通用程序集和库文件进行加载、调用、组合成相应的标准浏览器插件。标准开发平台内还能够对标准浏览器插件进行试运行,在试运行过程中还存在报警提示,标准开发平台上开发出的标准浏览器插件根据虚拟的网络环境模拟标准浏览器插件在运行时会出现的问题,比如网页无法正常显示,图片无法正常打开,此时会有提示信息,对提示信息进行处理,将标准浏览器插件反应至相应的插件结构的具体位置中,在相应的位置对标准浏览器插件的网页文件进行修改,已达到适应各种不同浏览器内核的需求。对已经试运行成功或者是返回修改后的再试运行成功的标准浏览器插件进行组织、打包并发送至浏览器,此过程便是将标准浏览器插件载入当前浏览器中的具体过程。开发标准浏览器插件有利于统一,在需要开发插件时,在标准开发平台的插件结构下编写相应程序,进而组装,形成具有相应功能的插件,能够减少人力资源的浪费,同时对不同浏览器的类型也能够完全适应。标准开发平台上开发出的标准浏览器插也能够在此进行试运行,运行成功便进入下一步存储浏览器上,访问等,当是试运行不成功,标准浏览器插件将会被返回插件结构,进行错误的修改,已达到所需的要求。标准浏览器插件能够对当前浏览器内核进行访问读取当前浏览器的信息,值得说明的是,访问过程以及读取信息的过程是本领域公知的常识,故在此不在进行过多的阐述。当前浏览器的渲染引擎在窗口上显示请求到的内容,该内容是浏览器能够读取网站的网页文件,通常情况下,渲染引擎可以显示html、xml等文档及图片,但是对于特殊文件则无法正常渲染,而标准浏览器插件则可以对特殊文件进行渲染,然后在浏览器窗口上显示,特殊的文件比如是pdf文件、ceb文件、flashplayer等等特殊类型的文件。对于无法正常显示的特殊文件,此时标准浏览器插件便能够对网页文件进行解析,通过解析达到能够使得当前浏览器正常识别的网页文件,并在对相应的网页文件进行一致性的调整,从而使得当前浏览器能够正常的渲染显示。为了更好实现标准浏览器插件在对网页文件进行解析,并达到解析完整性,进一步地限定,所述步骤1.3中标准浏览器插件再对浏览器读取网站的网页文件进行解析的具体步骤为:步骤1.3.1:标准浏览器插件将网页文件的源文件进行文法分析;步骤1.3.2:标准浏览器插件对网页文件的源文件搭建解析树;步骤1.3.3:标准浏览器插件根据当前浏览器内核的类型将解析树进行转换为能够被当前浏览器识别的文档。标准浏览器插件在对网页文件进行解析的具体过程,解析网页文件是将文件转化为有意义的结构,即是能够让代码被理解和使用的结构,网页文件通常是一种代码格式,标准浏览器插件先对网页文件的代码进行文法分析,代码格式都有一定的文法规则,文法是指基于文档依据的语法规则,即文档的语言或者是格式,每种可被解析的文件的格式必须具有词汇以及语法规则组成的特定的文法。标准浏览器插件内含有解析器,解析器一般分为语法分析器和词法分析器,值得说明的是语法分析器和词法分析器是本领域内公知的,故在此不在进行过多的阐述,词法分析器主要是词法分析,是将输入分解为符号,符号是语言的词汇表,相当于我们熟悉的字典中的单词,语法分析器主要是对语法进行分析,语法分析是指对语言应用语法的规则,解析器一般分两个部分工作,词法分析器负责将输入分解为合法的符号,语法分析器则根据语言的语法规则分析出文档,解析树根据上述的词法分析和语法分析最后将文档构建为解析树。得到的解析树并不是最终的结构,解析器需要将解析树转换为能够为当前浏览器内核识别的文档。该过程更加具体的描述了解析的过程,使得本发明的方案更加完善,通过对网页文件的解析,并将无法渲染的网页文件进行转换能够被当前浏览器识别的文件。对于转换位能够识别的文档,因为开发者的开发水平参差不齐,存在较多的人为错误,为了更好的实现本发明,进一步地限定,所述步骤1.4中再根据当前浏览器内核的类型对解析的网页文件进行一致性调整,具体一致性调整的步骤为:步骤1.4.1:对文档进行符号的识别并传递至构建器;步骤1.4.2:构建器将接收到的符号重新构建能够适应当前浏览器内核的构建树;步骤1.4.3:构建器根据当前浏览器内核对重新建立的构建树进行符号的修改;步骤1.4.4:将修改后的构建树转换为网页文件。通过解析器对文档的符号进行识别,符号识别是指根据符号识别的算法,将输入解析变为符号,并将其传递给树构建器,并读取下一个字符,以识别下一个符号,直至处理完所有输入,符号识别主要是对开始标签、结束标签、属性名以及属性值进行识别。将构建树构建阶段,将元素附加到树上,每个由符号识别器识别生成的节点将会被构建树进行处理。构建器根据当前浏览器内核重新建立构建树在构建过程中还会对符号进行修改,已到达能够正常渲染的效果。为了更加具体的实现本发明,以及实现更好的自适应,进一步地限定,所述步骤1.4.3中构建器对重新建立的构建树进行修改包括对网页文件中源文件的错误或不规范编写进行修复。对网页文件中存在的错误进行修改,主要是修改不规范的书写方法,以及多余符号,达成能够正常渲染的效果。为了更加具体的实现本发明,进一步地限定,所述修复为增加或者是减少源文件的符号。为了节约程序,节约时间,在对网页文件进行修改后,进一步地限定,在所述步骤1.4.3和步骤1.4.4之间还包括有对修改后的网页文件进行试运行。试运行成功便能够正常的渲染,如果不成功,将会进一步返回修改直至到修改成功为止。为了使在操作过程中,使本发明更加完善,进一步地限定,在所述试运行过程中还设置有报警提示。在试运行过程中当出现不成功的时候,马上提示报警,并显示出报警的信息,便能够更快更准的对网页文件进行修改。本发明与现有技术相比,具有以下优点及有益效果:(1)本发明通过标准浏览器插件对网页文件的解析以及一致性的调整,使得网页文件能够正常被渲染出来,有利于节约成本,不影响客户的操作;(2)本发明通过对网页文件的一致性调整,尤其是对特殊的文件,比如是pdf等文件,使得本产品的通用性更强,使用范围更广;(3)本发明通过在一致性调整后再进行试运行,能够减少错误,提高使用的效率;(4)本发明通过在试运行中设置报警提示,报警提示能够对错误信息经常报警处理,及时处理相应的错误,节约时间。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其他特征、目的和优点将会变得更为明显:图1为本发明跨浏览器插件自适应方法的流程图;图2为本发明跨浏览器插件对网页文件解析的流程图;图3为本发明跨浏览器插件对网页文件解析后一致性调整的流程图;图4为本发明标准浏览器插件流程图;图5为本发明标准浏览器插件的插件框架结构示意图;图6为本发明浏览器组件图。具体实施方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。实施例1:本实施例的主要流程,如图1至图6所示:1.一种跨浏览器插件的自适应方法,包括标准浏览器插件,标准浏览器插件对浏览器读取网站的网页文件自适应,具体包括以下步骤:步骤1.1将所述标准浏览器插件载入当前浏览器;步骤1.2标准浏览器插件对当前浏览器内核进行访问并读取当前浏览器的信息;步骤1.3标准浏览器插件再对浏览器读取网站的网页文件进行解析,判断网页文件与当前浏览器是否兼容;步骤1.4标准浏览器插件再根据当前浏览器内核的类型对解析的网页文件进行一致性调整;步骤1.5浏览器将调整后的网页文件进行渲染显示。具体的实施方式:对于基于不同渲染引擎开发的网页工程,其格式及语法是不一样的,且很多网站不按照w3c标准进行设计和研发,导致渲染引擎和标准浏览器插件对网页文件进行解析时,无法正常显示。对于这种情况,需要对解析后的网页文件进行调整,将解析后的网页文件进行格式完善和调整,实现标准浏览器插件的自适应。标准浏览器插件是根据标准开发平台开发而来,首先需要先定义标准开发平台,在标准开发平台上设置出标准浏览器插件,标准开发平台带有解析器和类加载器,标准开发平台的标准框架内设置插件结构,插件结构是包括至少一个根目录,在根目录下并列建立有通用程序集、插件文件、库文件、通用配置的子目录,其中通用程序集文件中仅存有常用的程序集,通用配置为插件的基本配置,库文件为常用的库文件。每个子目录之间具有物理隔离性,在插件文件下按照功能的不同设置不同的插件功能模块,并且各插件功能模块之间同时也具有物理隔离性,设置该插件结构,并把插件相应的功能进行分类,每一个插件功能模块为一个功能,该插件功能模块内有实现该功能需要的程序集、脚本文件、页面文件图片等全部文件,在此插件功能模块下编写相应的程序,便能够实现相应的功能。插件功能模块是根据插件的基本架构模式由此而来,一般一个完整的插件是由4个部分组成,分别是程序集、脚本文件、库文件和网页文件,通常库文件的作用是定义插件的属性,例如名称、版本、类型等;而网页文件页面内可以包含图片、链接,甚至音乐、程序等非文字元素,是具体实现插件的功能,用户可以根据需求,在网页文件下编写,以及将插件的目录按照开发标准平台的目录进行组织存放。开发出标准浏览器插件后,每一个功能都将被封装在插件功能模块中,插件功能模块内存放有更多的源文件目录,每一个标准浏览器插件都是具有相应的功能以及相应的界面,业务逻辑和数据等代码组成,由于每个插件功能模块之间也具有物理隔离性,开发者可以开发自己的功能,类加载器对这些代码进行解析,并在这上面进行独立测试、部署以及升级,一旦开发完成后,便在开发标准平台上进行由类加载器进行组合。标准开发平台上类加载器对标准浏览器插件进行解析、运行,按照标准开发平台的标准框架,标准框架内有较多的插件模块。标准浏览器插件开发完成将需要进行试运行,试运行成功后将打包发送至浏览器。标准浏览器插件先对当前浏览器类型进行访问并读取相应的信息,当前浏览器读取网站的网页文件无法显示时候,则标准浏览器插件对网页进行解析以及一致性的标准,具体解析和调整以下举例说明,以网页文件为html的格式进行说明,对于客户端html文件,标准浏览器插件在获取到该文件时,需要对文件进行一致性调整。具体解析的过程为:解析分为语法分析和词法分析两个子过程,语法分析是将输入分解为符合,符号是语言的词汇表,语法分析是指对语言应用的法则,词法分析负责将输入分解为合法的符号,根据语言的语法规则分析html的文档结构,从而构建解析树。得到解析树后,标准浏览器插件对解析树进行转换,转换为能够被当前浏览器识别的网页文档,及时转变为了能够识别的网页文档,但是存在网页文档编写错误或者格式错误可能性,还需要对网页文档进行一致性的调整,具体一致性调整的过程为:1)符号识别html的符号包括开始标签、结束标签、属性名及属性值。符号识别是指根据符号识别算法,将输入解析为符号,并将其传递给树构建器,并读取下一个字符,以识别下一个符号,直至处理完所有输入。符号识别算法相对较为复杂,用html页面来解释这个原理:<html><body>helloworld</body></html>初始状态为“datastate”,当遇到“<”字符,状态变为“tagopenstate”,读取一个a-z的字符将产生一个开始标签符号,状态相应变为“tagnamestate”,一直保持这个状态直到读取到“>”,每个字符都附加到这个符号名上,例子中创建的是一个html符号。当读取到“>”,当前的符号就完成了,此时,状态回到“datastate”,“<body>”重复这一处理过程。到这里,html和body标签都识别出来了。现在,回到“datastate”,读取“helloworld”中的字符“h”将创建并识别出一个字符符号,这里会为“helloworld”中的每个字符生成一个字符符号。这样直到遇到“</body>”中的“<”。现在,又回到了“tagopenstate”,读取下一个字符“/”将创建一个闭合标签符号,并且状态转移到“tagnamestate”,还是保持这一状态,直到遇到“>”。然后,产生一个新的标签符号并回到“datastate”。后面的“</html>”将和“</body>”一样处理。2)重新搭建构建树在树的构建阶段,将修改以document为根的dom树,将元素附加到树上,每个由符号识别器识别生成的节点将会被树构造器进行处理,规范中定义了每个符号相对应的dom元素,对应的dom元素将会被创建。这些元素除了会被添加到dom树上,还将被添加到开放元素堆栈中。这个堆栈用来纠正嵌套的未匹配和未闭合标签,这个算法也是用状态机来描述,所有的状态采用插入模式。继续阐述构建树的原理:此阶段将符号识别阶段生成的符号序列作为输入,然后开始构建。首先是“initialmode”,接收到html符号后将转换为“beforehtml”模式,在这个模式中对这个符号进行再处理。此时,创建了一个htmlhtmlelement元素,并将其附加到根document对象上。状态此时变为“beforehead”,接收到body符号时,即使这里没有head符号,也将自动创建一个htmlheadelement元素并附加到树上。现在,转到“inhead”模式,然后是“afterhead”。到这里,body符号会被再次处理,将创建一个htmlbodyelement并插入到树中,同时,转移到“inbody”模式。然后,接收到字符串“helloworld”的字符符号,第一个字符将导致创建并插入一个text节点,其他字符将附加到该节点。接收到body结束符号时,转移到“afterbody”模式,接着接收到html结束符号,这个符号意味着转移到了“afterafterbody”模式,当接收到文件结束符时,整个解析过程结束。3)自适应调整由于某些html页面是按照gecko的标准来编写,而某些windows用户则是按照trident的标准来编写,还有一些则是按照webkit的标准来编写,不同渲染引擎之间识别符号的格式不一致,插件自适应根据当前浏览器的内核对输入文件进行分析,自动修改和完善元素,使文件可以正常显示。例如:<table><table><tr><td>innertable</td></tr></table><tr><td>outertable</td></tr></table>当前浏览器内核为webkit,通过自适应插件对输入文件进行分析和处理后可正常渲染。如果没有自适应插件,webkit则会将嵌套的表格变为两个兄弟表格:<table><tr><td>outertable</td></tr></table><table><tr><td>innertable</td></tr></table>另一方面,对于某些编写不规范、错误的html页面,自适应插件可自动对标签和元素进行修复。当对于客户端为css文件,自适应插件在获取到该文件时,需要对文件进行一致性调整。具体设置有:不同于html,css属于上下文无关文法,可以用类似bnf的格式来定义。一个规则集合具有一个或是可选个数的多个选择器,这些选择器以逗号和空格(s表示空格)进行分隔。每个规则集合包含大括号及大括号中的一条或多条以分号隔开的声明。声明和选择器在后面进行定义。例如对于webkit内核的浏览器使用flex和bison解析生成器从css语法文件中自动生成解析器。bison创建一个自底向上的解析器,firefox使用自顶向下解析器。它们都是将每个css文件解析为样式表对象,每个对象包含css规则,css规则对象包含选择器和声明对象,以及其他一些符合css语法的对象。自适应插件根据解析器生成的不同结果进行调整,实现css的自适应。在对网页文件进行自适应调整后进行试运行,该试运行有利于检查错误,便于修改,同时试运行时还设置有报警提示,在遇到问题时,即使提示更加高效。可以理解的是,根据本发明一个实施例的解析器的结构,例如词法分析器和语法分析器等部件的工作原理和工作过程都是现有技术,且为本领域的技术人员所熟知,这里就不再进行详细描述。尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1