CN102207949A - 用于移动通讯设备终端的浏览器脚本解析方法及其装置 - Google Patents
用于移动通讯设备终端的浏览器脚本解析方法及其装置 Download PDFInfo
- Publication number
- CN102207949A CN102207949A CN 201010226788 CN201010226788A CN102207949A CN 102207949 A CN102207949 A CN 102207949A CN 201010226788 CN201010226788 CN 201010226788 CN 201010226788 A CN201010226788 A CN 201010226788A CN 102207949 A CN102207949 A CN 102207949A
- Authority
- CN
- China
- Prior art keywords
- script
- event model
- metainstruction
- service end
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及移动通讯设备终端浏览器技术领域,特别是一种用于移动通讯设备终端的浏览器脚本解析方法及其装置,所述移动通讯设备终端采用服务端/客户端架构浏览网页,所述方法包括:服务端根据客户端请求,访问网络服务器,获取网页第一脚本的脚本获取步骤;服务端对第一脚本进行分析并编译成第一中间指令码的中间指令获取步骤;服务端把第一中间指令码发送到客户端的中间指令发送步骤;客户端根据第一中间指令码解析脚本的脚本解析步骤。使用本发明,能够较好的解决移动通讯设备终端浏览器脚本功能,并且解析移动通讯设备终端浏览器庞大和适配困难的问题。
Description
技术领域
本发明涉及移动通讯设备终端浏览器技术领域,特别是一种用于移动通讯设备终端的浏览器脚本解析方法及其装置。
背景技术
脚本是页面的一个组成部分,浏览器都能够支持脚本。浏览器的脚本包括JavaScript,VBScript,Jscript等。每种脚本均具有不同的版本,例如JavaScript有1.3,1.5,1.6,1.7等标准。
由于脚本跟页面是融合在一起,全客户端架构能够很好的支持脚本,但是由于脚本解析需要耗费大量的资源,因此全客户端架构的脚本解析会非常的慢,并且很影响用户体验。另外浏览器还需要对不同标准的脚本进行处理,使得整个浏览器的代码非常庞大,效率非常的缓慢。
发明内容
本发明的第一个发明目的在于提供一种用于移动通讯设备终端的浏览器脚本解析方法,以解决现有技术中,浏览器解析脚本效率缓慢的技术问题。
为了实现本发明的第一个发明目的,采用的技术方案如下:
一种用于移动通讯设备终端的浏览器脚本解析方法,所述移动通讯设备终端采用服务端/客户端架构浏览网页,所述方法包括:
服务端根据客户端请求,访问网络服务器,获取网页第一脚本的脚本获取步骤;
服务端对第一脚本进行分析并编译成第一中间指令码的中间指令获取步骤;
服务端把第一中间指令码发送到客户端的中间指令发送步骤;
客户端根据第一中间指令码解析脚本的脚本解析步骤。
作为一种优选方案,所述中间指令获取步骤的具体步骤为:
服务端将读取的第一脚本进行词法和语法分析,创建语法树的语法分析步骤;
服务端根据语法树从第一脚本提取原始事件模型和/或***事件模型的提取步骤;
服务端根据统一的事件模型***对原始事件模型和/或***事件模型进行适配,获得标准事件模型的适配步骤;
服务端以标准事件模型替换原始事件模型和/或***事件模型,得到第一标准脚本的替换步骤;
服务端对第一标准脚本进行编译并获得中间指令码的编译步骤。
作为进一步的优选方案:
所述统一的API***包括原始事件模型和/或***事件模型与标准事件模型对应表;
所述适配步骤包括:服务端从统一的事件模型***中,提取原始事件模型对应的标准事件模型并返回。
作为更进一步的优选方案,所述浏览器的***为Internet Explore系列或者Mozilla系列或者Chrome系列,所述的***事件模型为Internet Explore事件模型或Mozilla事件模型或Chrome系列模型。
作为一种优选方案,所述中间指令发送步骤,把第一中间指令码保存在缓存中,然后把第一中间指令码发送到客户端。
作为进一步的优选方案,所述方法还包括:
(61)服务端根据客户端请求,访问网络服务器,获取网页第二脚本;
(62)服务端检查第二脚本与第一脚本是否相同,如果不相同,则执行步骤(63),否则从缓存中获取第一中间指令码并发送到客户端,客户端根据第一中间指令码解析脚本,并退出;
(63)服务端对第二脚本进行分析并编译成第二中间指令码;
(64)服务端把第二中间指令码发送到客户端;
(65)客户端根据第二中间指令码解析脚本。
本发明的第二个发明目的在于提供一种用于移动通讯设备终端的浏览器脚本解析装置,以应用本发明第一个发明目的所提供的脚本解析方法。
为了实现本发明的第二个发明目的,采用的技术方案如下:
一种用于移动通讯设备终端的浏览器脚本解析装置,所述移动通讯设备终端采用服务端/客户端架构浏览网页,所述装置包括:
设置在服务端,根据客户端请求,访问网络服务器,获取网页第一脚本的脚本获取模块;
设置在服务端,对第一脚本进行分析并编译成第一中间指令码的中间指令获取模块;
设置在服务端,把第一中间指令码发送到客户端的中间指令发送模块;
设置在客户端,根据第一中间指令码解析脚本的脚本解析模块。
作为一种优选方案,所述中间指令获取模块包括:
对读取的第一脚本进行词法和语法分析,创建语法树的语法分析模块;
根据语法树从第一脚本提取原始事件模型和/或***事件模型的提取模块;
统一的事件模型***对原始事件模型和/或***事件模型进行适配,获得标准事件模型的适配模块;
以标准事件模型替换原始事件模型和/或***事件模型,得到第一标准脚本的替换模块;
对第一标准脚本进行编译并获得中间指令码的编译模块。
作为进一步的优选方案,所述统一的API***为:
所述统一的API***包括原始事件模型和/或***事件模型与标准事件模型对应表;
所述适配模块包括:从统一的事件模型***中,提取原始事件模型和/或***事件模型对应的标准事件模型的查询模块。
本发明在服务端/客户端架构下,将脚本的处理拆分为服务端/客户端的方式,由服务端处理脚本的解析等功能,可以解决脚本解析过程中的资源耗用,并且可以适配不同的脚本的标准。
使用本发明,能够较好的解决移动通讯设备终端浏览器脚本功能,并且解析移动通讯设备终端浏览器庞大和适配困难的问题,提高浏览器解析脚本效率。
附图说明
图1为本发明实施例的结构示意图;
图2为本发明实施例的流程图;
图3为本发明实施例的结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细的说明。
传统的脚本解析是根据javascript脚本经过词法分析、语法分析,创建成一个语法树。此语法树跟DOM树结合在一起。解析的时候首先需要创建运行时环境,然后根据此语法树和DOM树进行解析。
脚本的解析和页面是完全结合在一起。
本方法的思路是脚本解析分为两个部分:设置在服务端的编译器和设置在客户端的解析器。
本实施例的结构示意图如图1所示,竖线左侧为服务端,右侧为客户端,服务端编译javascript脚本为中间指令码(也称为字节码),服务端负责对脚本的词法分析,语法分析,语法树构建和编译成精简的中间指令码。客户端读取此中间指令码,然后进行解析。
在本实施例中,应用编程借口(API)即为事件模型。针对脚本的不同的API,对API定义为一个指令集,从而大大的减少脚本的代码,并且这些指令可以容易的适配不同浏览器的API定义。
另外,由于将脚本编译成指令码,可以方便的对脚本进行缓存,当下次访问相同的脚本的时候,可以直接从缓存中读取指令码,而无需再次进行编译,从而加快脚本的解析。
脚本编译之后将会得到如下的指令:
ADD,SUB,MUL,DIV,MOD,AND,OR,XOR,NOT,DROP,GT,LT,EQ,SHL,SHR,NEG,INV,SWAP,PUSH_STR,PUSH_NUM,PUSH_INT,PUSH_FN,PUSH_GLOBAL, NEW,CTX_SET,CTX_GET,CALL,RET,GO,IF等。
例如:下面的JavaScript片段:
var message = “HelloWorld”;
alert(message);
将会被编译成如下的指令:
PUSH_STR 0
PUSH_STR 1
CTX_SET
DROP
PUSH_GLOBAL
PUSH_STR 2
CTX_SET
PUSH_STR 1
CTX_GET
CALL
通过此方法,将所有大量的分析和适配的工作交给服务端处理,客户端维护指令码和统一的API体系,通过分离式的处理,可以充分利用服务器,将各种适配工作交给服务器处理。使得客户端只需无需解析,只需要对指令码进行解析即可。
本实施例为一种用于手机终端的浏览器脚本解析方法,所述手机终端采用服务端/客户端架构浏览网页。如图2所示为本发明实施例的结构示意图,虚线上部分为服务端,虚线下部分为客户端。
具体流程如图3所示,包括:
S1)服务端根据客户端请求,访问网络服务器,获取网页脚本;
S2)服务端对脚本进行词法分析,语法分析并构建语法树;
S3)根据手机终端上操作的特点,将不同浏览器API***抽取出统一的API***。该API***是专门为手机而适配。在网页上具有DOM0,DOM1和DOM2等对象模型,因此也产生了不同的API,这些API实际上都可以通过DOM2的API来表示,比如某个特定名称的表单的访问,可以通过DOM2的读取特定元素的API来进行访问,这些就减少了大量相同的API的处理。
例如:脚本的事件模块在不同的浏览器具有不同的事件模型,脚本的事件模型包括:原始事件模型、标准事件模型、和***事件模型。***时间模型根据***的不同分为Internet Explorer事件模型和Netscape事件模型。原始的事件模型称为DOM0的事件模型,标准事件模型是DOM2的事件模型,虽然不同的事件模型具有不同的表示方式方法,但最终的事件处理结构都一样,为此,将原始事件模型,***事件模型都统一到标准事件模型。
页面的事件模型是根据桌面浏览器而设计的,在移动通讯设备终端上,区分键盘终端设备和触摸屏终端设备。
在桌面浏览器上,更多的采用的是鼠标的事件(指针事件),因此桌面浏览器的鼠标的事件不适合于键盘终端设备,服务器端必须根据移动终端设备的操作设备进行匹配。
在手机终端中不支持的API,比如窗口移动函数,窗口大小调整函数,窗口的状态栏属性、窗口的打印功能、窗口的多框架处理、屏幕的颜色、宽度和高度等,在统一的API体系和对象/方法中进行适配。
如onmouseout/onmouseover/onmouseup事件在桌面浏览器上可以得到具体的满足,而在移动终端设备上不一定满足,可以统一为onclick事件,另外ondbclick事件也无法在移动终端上实现,必须转换为onclick事件进行处理。其中的onmouseout/onmouseover/onmouseup/ondbclick为原始事件模型,而onclick事件模型则为标准事件模型。
不同的语言和版本的脚本可以通过脚本的type或者language属性进行识别,或者通过语言的关键词进行识别。
S4) 经过对象/方法中适配将会产生适用于手机浏览器的API,并对此进行编码编译处理。
对于不同的对象,翻译成不同的编码。比如window对象,将其翻译编码为0x10,document对象,翻译成编码为0x20。而对于等同效果的对象,则翻译成相同的编码。比如window对象下面的this属性和self属性,是个等同的效果,也必须适配统一的指令,比如编码为0x11。
S5) 脚本和对象/方法将被编译成指令码。服务端将指令码发送给客户端,即手机终端。
S6) 手机终端根据指令码进行解释,逐个指令码,完成脚本相应的操作。
Claims (9)
1.一种用于移动通讯设备终端的浏览器脚本解析方法,所述移动通讯设备终端采用服务端/客户端架构浏览网页,其特征在于,所述方法包括:
服务端根据客户端请求访问网络服务器,获取网页第一脚本的脚本获取步骤;
服务端对第一脚本进行分析并编译成第一中间指令码的中间指令获取步骤;
服务端把第一中间指令码发送到客户端的中间指令发送步骤;
客户端根据第一中间指令码解析脚本的脚本解析步骤。
2.根据权利要求1所述的脚本解析方法,其特征在于,所述中间指令获取步骤的具体步骤为:
服务端将读取的第一脚本进行词法和语法分析,创建语法树的语法分析步骤;
服务端根据语法树从第一脚本提取原始事件模型和/或***事件模型的提取步骤;
服务端根据统一的事件模型***对原始事件模型和/或***事件模型进行适配,获得标准事件模型的适配步骤;
服务端以标准事件模型替换原始事件模型和/或***事件模型,得到第一标准脚本的替换步骤;
服务端对第一标准脚本进行编译并获得中间指令码的编译步骤。
3.根据权利要求2所述的脚本解析方法,其特征在于:
所述统一的API***包括原始事件模型和/或***事件模型与标准事件模型对应表;
所述适配步骤包括:服务端从统一的事件模型***中,根据原始事件模型和/或***事件模型,获取对应的标准事件模型并返回。
4.根据权利要求3所述的脚本解析方法,其特征在于,所述浏览器的***为Internet Explore系列或者Mozilla系列或者Chrome系列,所述的***事件模型为Internet Explore事件模型或Mozilla事件模型或Chrome系列模型。
5.根据权利要求1所述的脚本解析方法,其特征在于,所述中间指令发送步骤,把第一中间指令码保存在缓存中,然后把第一中间指令码发送到客户端。
6.根据权利要求5所述的脚本解析方法,其特征在于,所述方法还包括:
(61)服务端根据客户端请求,访问网络服务器,获取网页第二脚本;
(62)服务端检查第二脚本与第一脚本是否相同,如果不相同,则执行步骤(63),否则从缓存中获取第一中间指令码并发送到客户端,客户端根据第一中间指令码解析脚本,并退出;
(63)服务端对第二脚本进行分析并编译成第二中间指令码;
(64)服务端把第二中间指令码发送到客户端;
(65)客户端根据第二中间指令码解析脚本。
7.一种用于移动通讯设备终端的浏览器脚本解析装置,所述移动通讯设备终端采用服务端/客户端架构浏览网页,其特征在于,所述装置包括:
设置在服务端,根据客户端请求,访问网络服务器,获取网页第一脚本的脚本获取模块;
设置在服务端,对第一脚本进行分析并编译成第一中间指令码的中间指令获取模块;
设置在服务端,把第一中间指令码发送到客户端的中间指令发送模块;
设置在客户端,根据第一中间指令码解析脚本的脚本解析模块。
8.根据权利要求7所述的脚本解析装置,其特征在于,所述中间指令获取模块包括:
对读取的第一脚本进行词法和语法分析,创建语法树的语法分析模块;
根据语法树从第一脚本提取原始事件模型的提取模块;
统一的事件模型***对原始事件模型和/或***事件模型进行适配,获得标准事件模型的适配模块;
以标准事件模型替换原始事件模型和/或***事件模型,得到第一标准脚本的替换模块;
对第一标准脚本进行编译并获得中间指令码的编译模块。
9.根据权利要求8所述的脚本解析装置,其特征在于,所述统一的API***包括标准事件模型和原始事件模型对应表;
所述适配模块包括:从统一的事件模型***中,根据原始事件模型和/或***事件模型,获取对应的标准事件模型并返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010226788XA CN102207949B (zh) | 2010-07-15 | 2010-07-15 | 用于移动通讯设备终端的浏览器脚本解析方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010226788XA CN102207949B (zh) | 2010-07-15 | 2010-07-15 | 用于移动通讯设备终端的浏览器脚本解析方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102207949A true CN102207949A (zh) | 2011-10-05 |
CN102207949B CN102207949B (zh) | 2012-11-21 |
Family
ID=44696787
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010226788XA Expired - Fee Related CN102207949B (zh) | 2010-07-15 | 2010-07-15 | 用于移动通讯设备终端的浏览器脚本解析方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102207949B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823694A (zh) * | 2014-02-10 | 2014-05-28 | 深圳市同洲电子股份有限公司 | 一种脚本文件的更新方法及装置 |
CN104572194A (zh) * | 2014-12-30 | 2015-04-29 | 北京奇虎科技有限公司 | 一种模块加载方法和装置 |
CN103645929B (zh) * | 2013-12-17 | 2016-11-30 | 江西博微新技术有限公司 | 工程造价计算描述语言bcl的编译执行装置及编译执行方法 |
CN103885879B (zh) * | 2014-03-26 | 2018-01-19 | 卡斯柯信号有限公司 | 用于联锁软件自动测试平台***的脚本解析方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001084359A2 (en) * | 2000-04-28 | 2001-11-08 | Obongo, Inc. | Method and system for automating internet interactions using recorded data |
CN1841328A (zh) * | 2005-04-02 | 2006-10-04 | 华为技术有限公司 | 脚本语言的自动机方法 |
CN101150803A (zh) * | 2007-10-24 | 2008-03-26 | 优视动景(北京)技术服务有限公司 | 微浏览器处理网络数据的方法、微浏览器及其服务器 |
-
2010
- 2010-07-15 CN CN201010226788XA patent/CN102207949B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001084359A2 (en) * | 2000-04-28 | 2001-11-08 | Obongo, Inc. | Method and system for automating internet interactions using recorded data |
CN1841328A (zh) * | 2005-04-02 | 2006-10-04 | 华为技术有限公司 | 脚本语言的自动机方法 |
CN101150803A (zh) * | 2007-10-24 | 2008-03-26 | 优视动景(北京)技术服务有限公司 | 微浏览器处理网络数据的方法、微浏览器及其服务器 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645929B (zh) * | 2013-12-17 | 2016-11-30 | 江西博微新技术有限公司 | 工程造价计算描述语言bcl的编译执行装置及编译执行方法 |
CN103823694A (zh) * | 2014-02-10 | 2014-05-28 | 深圳市同洲电子股份有限公司 | 一种脚本文件的更新方法及装置 |
CN103885879B (zh) * | 2014-03-26 | 2018-01-19 | 卡斯柯信号有限公司 | 用于联锁软件自动测试平台***的脚本解析方法 |
CN104572194A (zh) * | 2014-12-30 | 2015-04-29 | 北京奇虎科技有限公司 | 一种模块加载方法和装置 |
CN104572194B (zh) * | 2014-12-30 | 2019-03-08 | 北京奇虎科技有限公司 | 一种模块加载方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102207949B (zh) | 2012-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124576B (zh) | 一种多平台小程序及h5页面适配的方法及*** | |
Wang | Improving data transmission in web applications via the translation between XML and JSON | |
CN109522018B (zh) | 页面处理方法、装置及存储介质 | |
KR20180122017A (ko) | 실시간 데이터플로우 프로그래밍을 위한 효율적인 상태 머신 | |
CN104657189A (zh) | 混合式动态码编译装置、方法及其服务*** | |
CN102184184B (zh) | 一种网页动态信息获取方法 | |
CN102567384B (zh) | 基于网页浏览器引擎的网页多语言动态切换方法及*** | |
CN104461513B (zh) | 一种生成表单界面的方法及装置 | |
CN102289376A (zh) | 基于嵌入式的多语言web页面实现方法及*** | |
CN106293675A (zh) | ***静态资源加载方法及装置 | |
CN102831190B (zh) | 一种在低端设备上浏览cml文件的方法 | |
CN106202066A (zh) | 网站的翻译方法和装置 | |
CN103176807A (zh) | 网页应用执行的提速方法及*** | |
CN111831384A (zh) | 语言切换方法和装置、设备及存储介质 | |
CN109976840A (zh) | 一种基于前后台分离平台下实现多语言自动适配的方法及*** | |
CN101246420A (zh) | 多语言***实现统一开发的方法及*** | |
CN104216926A (zh) | 一种页面生成方法、模版引擎及处理器 | |
CN102622448A (zh) | 一种数字电视互动应用页面标记语言解析方法 | |
CN101763432A (zh) | 一种轻量级网页动态视图快速构建方法 | |
CN102207949B (zh) | 用于移动通讯设备终端的浏览器脚本解析方法及其装置 | |
CN103458065A (zh) | 一种HTML5标准下基于Webkit内核的视频地址提取方法 | |
CN111459537A (zh) | 冗余代码去除方法、装置、设备与计算机可读存储介质 | |
CN105528369A (zh) | 网页转码方法、装置以及服务器 | |
CN102508887A (zh) | 一种数字电视交互服务标记语言解析***及方法 | |
CN111507074A (zh) | 数据处理方法及装置、处理器、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200601 Address after: 310051 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Alibaba (China) Co.,Ltd. Address before: 100080 No. 29, building 16, building 18, Suzhou Street, Haidian District, Beijing, 1610-1620 Patentee before: UC MOBILE Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121121 |