CN105630524A - 网页文本解析方法、装置和移动终端 - Google Patents
网页文本解析方法、装置和移动终端 Download PDFInfo
- Publication number
- CN105630524A CN105630524A CN201410605789.3A CN201410605789A CN105630524A CN 105630524 A CN105630524 A CN 105630524A CN 201410605789 A CN201410605789 A CN 201410605789A CN 105630524 A CN105630524 A CN 105630524A
- Authority
- CN
- China
- Prior art keywords
- web page
- javascript script
- script
- common javascript
- javascript
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/986—Document structures and storage, e.g. HTML extensions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/221—Parsing markup language streams
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/72—Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
- H04M1/724—User interfaces specially adapted for cordless or mobile telephones
- H04M1/72403—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
- H04M1/72445—User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality for supporting Internet browser applications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种网页文本解析方法、装置和移动终端,在解析出网页元素为普通的javascript脚本后,加载普通javascript脚本,同时构建所述普通javascript脚本对应的DOM树节点。完成普通javascript脚本加载后执行所述普通javascript脚本,完成所述普通javascript脚本对应的DOM树节点构建后进行下一网页元素的解析。在进行普通javascript脚本的加载和执行时,并不停止构建所述普通javascript脚本对应的DOM树节点和下一网页元素的解析工作,加快了网页文本处理速度。进而减少了整个网页的解析、加载和渲染显示时间,使得普通javascript脚本元素后面的元素渲染显示提前。
Description
技术领域
本发明涉及移动通信技术领域,更为具体地,涉及网页文本解析方法及装置
背景技术
浏览器在进行网页渲染时,首先会将网页文本解析成DOM树,然后根据DOM树进行网页渲染。其中会影响网页渲染时机的网页资源主要有外联的css样式文件和javascript脚本文件,css样式文件会影响网页的渲染结果,所以现在主流浏览器都需要等待css样式文件加载结束之后才会发起渲染流程;而针对javascript脚本文件,目前包含三种javascript脚本文件,分别为带有的defer和async属性的<script>元素的和普通的<script>元素。目前浏览器解析,加载和执行script脚本之间关系的标准时序,如图1A、图1B、图1C所示,各有不同:
图1A示出了现有技术的普通javascript脚本<script>的处理时序图。
图中线条1表示网页文本解析时间轴,线条2表示一个普通的<script>元素的加载时间轴,线条3是一个普通的<script>元素的执行时间轴。
如图1A所示,普通javascript脚本的处理<script>,又叫同步执行的<script>元素,这是<script>元素的默认处理行为。当加载和执行脚本的时候,HTML文档的解析流程会被暂停。当当前的<script>元素加载执行完成之后,再进行下一元素的处理。对于较慢的网络环境,或者含有大量脚本的网站,这意味着页面的显示会被延后。
图1B示出了现有技术的Deferred脚本<scriptdefer>的处理时序图。
图中线条1表示网页文本解析时间轴,线条2表示一个<scriptdefer>元素的加载时间轴,线条3是一个<scriptdefer>元素的执行时间轴。
如图1B所示,Defer属性的脚本的处理是在脚本加载的过程中继续解析HTML文档直到解析结束,之后才会执行脚本。
图1C示出了现有技术异步脚本<scriptasync>的处理时序图。
图中线条1表示网页文本解析时间轴,线条2表示一个<scriptasync>元素的加载时间轴,线条3是一个<scriptasync>元素的执行时间轴。
如图1C所示,异步属性的脚本,同样会在加载的过程中继续解析HTML文档,但是和defer属性不同的是,当脚本加载结束时会立即执行脚本。
从上面的时序图中可以看到,普通的脚本的执行时在加载和执行javascript脚本的时候,HTML文档的解析流程会被暂停,从而导致页面的延时显示。
发明内容
鉴于上述问题,本发明的目的是提供一种网页文本解析方法及装置,能减少了整个网页的解析、加载和渲染显示时间,使得普通javascript脚本元素后面的元素渲染显示提前。
根据本发明的一个方面,提供一种网页文本解析方法,包括:
确定当前解析的网页元素为普通的javascript脚本,则加载所述普通javascript脚本以获得所述普通javascript脚本的执行文件,同时构建所述普通javascript脚本对应的DOM树节点;
完成所述普通javascript脚本加载后,执行所述普通javascript脚本的执行文件;
完成所述普通javascript脚本对应的DOM树节点构建后,进行下一网页元素的解析。
其中,确定当前解析的网页元素为普通的javascript脚本后,还包括:
标记所述普通javascript脚本在DOM树中的位置;
其中,执行所述普通javascript脚本的javascript执行文件,包括:
根据所述普通javascript脚本在DOM树中的位置执行所述普通javascript脚本的javascript执行文件。
还包括:当执行所述普通javascript脚本的javascript执行文件是要执行文档写入时,解析所述执行文件的javascript代码生成对应独立的DOM树结构,写入到标记的位置。
还包括:当执行所述普通javascript脚本的javascript执行文件是执行访问或操作DOM节点时,仅允许访问或操作所述标记位置前面的DOM节点。
执行所述普通javascript脚本的javascript执行文件前,还包括:
创建执行所述javascript执行文件的执行任务;
将执行任务加入执行任务队列,其中,所述执行任务队列的执行任务执行方式是在前的任务执行完成之后再进行下一任务的执行。
还包括:在判断出当前网页文本的网页元素没有完成解析时,进行下一元素的解析。
另一方面,本发明还提供一种网页文本解析装置,包括:
解析单元,用于进行网页文本的网页元素的解析;
DOM树构建单元,用于确定当前解析的网页元素为普通的javascript脚本时,构建所述普通javascript脚本对应的DOM树节点;
加载单元,用于确定当前解析的网页元素为普通的javascript脚本时,加载所述普通javascript脚本以获得所述普通javascript脚本的执行文件;
执行单元,完成所述普通javascript脚本加载后,执行所述普通javascript脚本的执行文件。
其中,还包括:标记单元,用于标记所述普通javascript脚本在DOM树中的位置。
其中,还包括:解析子单元,用于执行所述普通javascript脚本的javascript执行文件是要执行文档写入时,解析所述执行文件的javascript代码生成对应独立的DOM树结构;
文本写入单元,用于将所述解析子单元解析所述执行文件的javascript代码生成的对应独立的DOM树结构写入到标记单元标记的位置。
本发明还提供一种移动终端,包括:网页文本解析装置和渲染装置;
其中,网页文本解析装置包括:
解析单元,用于进行网页文本的网页元素的解析;
DOM树构建单元,用于确定当前解析的网页元素为普通的javascript脚本时,构建所述普通javascript脚本对应的DOM树节点;
加载单元,用于确定当前解析的网页元素为普通的javascript脚本时,加载所述普通javascript脚本以获得所述普通javascript脚本的执行文件;
执行单元,完成所述普通javascript脚本加载后,执行所述普通javascript脚本的执行文件;
渲染装置,用于根据网页文本解析装置解析出的DOM树进行网页渲染显示。
本发明的网页文本解析方法、装置和移动终端,在解析出网页元素为普通的javascript脚本后,加载普通javascript脚本,同时构建所述普通javascript脚本对应的DOM树节点。完成普通javascript脚本加载后执行所述普通javascript脚本,完成所述普通javascript脚本对应的DOM树节点构建后进行下一网页元素的解析。在进行普通javascript脚本的加载和执行时,并不停止构建所述普通javascript脚本对应的DOM树节点和下一网页元素的解析工作,加快了网页文本处理速度。进而减少了整个网页的解析、加载和渲染显示时间,还能使得普通javascript脚本元素后面的元素渲染显示提前。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
图1A示出了现有技术的普通javascript脚本<script>的处理时序图;
图1B示出了现有技术的Deferred脚本<scriptdefer>的处理时序图;
图1C示出了现有技术异步脚本<scriptasync>的处理时序图;
图2示出了本发明的网页文本解析方法的一个实施例的流程图;
图3为本发明的网页文本解析方法的另一个实施例流程图;
图4为本发明的网页文本解析方法的再一个实施例流程图;
图5A示出了现有异步javascript脚本即<scriptasync>的异步处理两个异步script元素的时序图;
图5B是图4的实施例的处理两个普通javascript脚本的时序图;
图6是一个HTML文本经过解析之后生成的DOM树结构示例;
图7为本发明的网页文本解析装置的一个实施例框图;
图8为本发明的网页文本解析装置的另一个实施例框图;
图9示出了本发明的一种移动终端的一个实施例的结构框图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
以下将结合附图对本发明的具体实施例进行详细描述。
本发明的网页文本解析方法和装置,在解析出网页元素为普通的javascript脚本之后,加载和执行普通javascript脚本,同时构建所述普通javascript脚本对应的DOM树节点,进行下一网页元素的解析。在进行javascript脚本的加载和执行时,并不停止构建所述普通javascript脚本对应的DOM树节点和下一网页元素的解析工作,加快了网页文本处理速度,使得对javascript脚本渲染显示提前。进而减少了整个网页的解析、加载和渲染显示时间。
图2示出了本发明的网页文本解析方法的一个实施例的流程图。
如图2所示,本发明的网页文本解析方法包括:
S200,解析网页文本的网页元素。
浏览器在进行网页的渲染前首先要根据用户请求去目标网站获取网页文本即网页的源文件,获取到网页文本后,将网页文本解析成DOM树。浏览器根据DOM树结构对网页进行排版渲染。同时网页包含很多网页元素,例如网页文本、图片和javascript脚本文件等。如果是javascript脚本文件,则要根据javascript脚本文件的类型进行相应的处理。
S210,确定当前解析的网页元素为普通的javascript脚本。
浏览器进行网页文本的某一网页元素解析时,首先解析该元素的HTML标记信息,当解析到是<script>标签的网页元素时,则认为是普通的javascript脚本。
确认解析出当前的网页元素为普通的javascript脚本后,同时执行S220和S230。
S220,加载所述普通javascript脚本以获得所述普通javascript脚本的javascript执行文件。这里加载所述普通javascript脚本是去网页服务器获取所述普通javascript脚本的javascript执行文件。
S230,构建普通javascript脚本对应的DOM树节点。
完成S220后,进入S240执行所述普通javascript脚本的javascript执行文件。
在获取到所述普通javascript脚本的javascript文件后,执行所述javascript文件。这里javascript文件的执行包括某些运算的执行或者跟当前DOM树结构相关执行。
完成S230后,进入S250,判断当前网页文本是否完成解析。如果没有完成解析则进入S200。
本实施例的网页文本解析方法,在解析出网页元素为普通的javascript脚本之后,加载普通javascript脚本,同时构建所述普通javascript脚本对应的DOM树节点。完成普通javascript脚本加载后执行所述普通javascript脚本,完成所述普通javascript脚本对应的DOM树节点构建后进行下一网页元素的解析。在进行普通javascript脚本的加载和执行时,并不停止构建所述普通javascript脚本对应的DOM树节点和下一网页元素的解析工作,加快了网页文本处理速度。进而减少了整个网页的解析、加载和渲染显示时间。还能使得普通javascript脚本元素后面的元素渲染显示提前。
图3为本发明的网页文本解析方法的另一个实施例流程图。
如图3所示,本实施例的网页文本解析方法,包括:
S300,解析网页文本的网页元素。
S310,确定当前解析的网页元素为普通的javascript脚本。
本实施例的S300,S310同上一实施例的S200,S210。这里不再赘述实现过程。
S320,标记所述普通javascript脚本在DOM树中的位置。
由于网页文本最终会解析成一个DOM树,每个DOM树节点可能是一个网页元素或者一类网页元素的几何,所以每个网页元素在DOM树中有一个位置。
完成S320后,执行S330,加载所述普通javascript脚本以获得所述普通javascript脚本的javascript执行文件。
这里加载所述普通javascript脚本是去网页服务器获取所述普通javascript脚本的javascript执行文件。
S340,确定所述javascript执行文件是要执行文档写入。
当去网络网页服务器获取到所述普通javascript脚本的javascript文件后,会执行javascript执行文件。此时javascript执行文件为javascript执行代码。这里的javascript执行文件的执行包括某些运算的执行或者跟当前DOM树结构相关执行。而与当前DOM树结构相关执行包括执行文档写入。即执行document.write函数,将该函数中的数据流写到当前的网页文本数据流中。即当javascript执行文件是document.write函数时则确定所述javascript执行文件是要执行文档写入。
为了保持与现有的普通javascript脚本执行流程得到的结果一致,确定执行javascript文件是执行文档写入时,执行S350,解析所述执行文件的javascript代码生成对应独立的DOM树结构。由于去网页服务器获取的执行文件也是HTML语句,也需要经过解析后,才能进行渲染。所以需要将S330中加载普通javascript脚本获取的执行文件的javascript代码解析成独立的DOM结构。
完成350后,执行S360,将所述独立的DOM树结构写入到S320标记的位置。
在执行S330的同时,即在执行加载所述普通javascript脚本同时,还执行S370,构建所述普通javascript脚本对应的DOM树节点。完成S370后,进入S380判断当前网页文本解析是否完成,如果当前文本已经解析完成则本方案结束。如果当前网页文本解析未完成,则返回S300步骤,继续进行网页文本的网页元素的解析。
本领域的技术人员能理解到S320只要是在S360之前完成即可,并不局限于在S330和S370之前完成。
本实施例为普通javascript脚本经过加载后,其执行是执行将文档写入到当前的网页文本数据流中。即执行的是document.write函数。这种写入会导致当前网页文本对应的DOM树结构发生变化。而现有技术的普通javascript脚本是在解析出普通的javascript脚本时,停止解析流程(包括对普通javascript脚本的DOM节点的构建,以及进行下一元素的解析工作),去加载和执行普通的javascript脚本,如果是执行写入到当前的网页文本数据流中,则直接可以写入到停止的位置。由于本发明不停止解析流程,所以为了保持与现有的普通javascript脚本执行结果达到一致的效果,在执行之前需要标记普通javascript脚本在DOM树中的位置。然后将写入函数中的HTML代码解析成独立的DOM结构后,写入到之前标记的位置。
图4为本发明的网页文本解析方法的再一个实施例流程图。
如图4所示,本实施例的网页文本解析方法,包括:
S400,解析网页文本的网页元素。
S401,确定当前解析的网页元素为普通的javascript脚本。
S402,标记所述普通javascript脚本在DOM树中的位置。
完成S402后,执行S403,加载所述普通javascript脚本以获得所述普通javascript脚本的javascript执行文件。
本实施例的S400,S401,S402,S403同上一实施例的的S300,S310,S320,S330。这里不在对实现细节进行赘述说明。
完成S403后,在执行所述普通javascript脚本的javascript执行文件之前。进行S404,创建执行所述javascript执行文件的执行任务。将执行任务加入执行任务队列(S405)。在S404之后S405之前,如果还没有执行任务队列,则创建执行任务队列。
判断执行队列中之前的执行任务是否已经执行完成(S406),如果执行完成则进入S407,如果没有执行完成,则等待前面的执行任务按照加入时间顺序逐个执行完成(S408)之后再进入S407。执行任务队列的任务执行是按照执行任务加入的时间顺序逐个执行的,必须在前一个执行任务执行完了之后再进行下一执行任务的执行。
S407,根据S402标记的位置,执行当前javascript执行文件的执行任务。
javascript执行文件的执行任务是要访问和操作某个DOM节点时,标记的位置前面的DOM节点可以访问和操作,后面的不允许访问和操作。也是为了保持与现有个普通的javascript脚本处理流程效果一致。
在执行S403的同时,即在执行加载所述普通javascript脚本同时,还执行S409,构建所述普通javascript脚本对应的DOM树节点。完成S409后,进入S410判断当前网页文本解析是否完成,如果当前文本已经解析完成则结束。如果当前网页文本解析未完成,则返回S400步骤,继续进行网页文本的网页元素的解析。
本领域的技术人员能理解到S402只要是在S407之前完成即可,并不局限于在S403和S408之前完成。
本实施例的普通javascript脚本的处理时序为异步加载,同步执行。如图1B所示,现有异步javascript脚本即<scriptasync>的异步处理时序会利用脚本加载的时间继续解析和渲染,但是这种处理时序无法保证多个相关依赖的脚本执行的正确性,例如有两个外部脚本文件script-A和script-B,在script-B中需要用到script-A中定义的函数,这时,如果script-B的加载时间比script-A要短,那么<scriptasync>的处理时序将会如图5A所示。
图5A示出了现有异步javascript脚本即<scriptasync>的异步处理两个异步script元素的时序图。
图5A中线条1表示网页文本解析时间轴,线条2表示script-A元素的加载时间轴,线条3是script-A元素的执行时间轴,线条4表示script-B元素的加载时间轴,线条5是script-B元素的执行时间轴。
从图5A可以发现,如果对普通javascript脚本也使用<scriptasync>的处理时序,那么由于script-B的加载时间比script-A要短,所以script-B反而会先执行,导致它无法访问script-A中定义的函数,脚本间的依赖关系被打破。
本方案中对普通javascript脚本处理时序的修改,如图5B所示。
图5B是图4的实施例的处理两个普通javascript脚本的时序图。
图中线条1表示网页文本解析时间轴,线条2表示script-A元素的加载时间轴,线条3是script-A元素的执行时间轴,线条4表示script-B元素的加载时间轴,线条5是script-B元素的执行时间轴。
如图5B所示,script-A元素先加载且先加入执行任务队列,等待script-A元素和script-B元素加载,不管script-B元素是否加载完成,script-B元素的执行必须是在script-A元素执行完成后再执行,这种处理时序即保证了脚本在加载的过程中不会阻塞解析和渲染流程,同时又能确保多个脚本之间依赖关系的正确性。
本实施例通过利用执行任务队列的方式管理普通javascript脚本的执行顺序,在脚本执行的时候保护网页的上下文内容。保证执行的结果符合标准。
图6是一个HTML文本经过解析之后生成的DOM树结构示例。
如图6所示,该DOM树中的的link节点和body节点及body节点的子节点(div、img)是已经解析并且在DOM树中创建了对应的节点。但是对于正在执行的script元素来说link节点和body节点及body节点的子节点都是不可被访问的。为了保证这个特性,本实施例通过利用执行任务队列的方式管理普通javascript脚本的执行顺序,在脚本执行的时候保护网页的上下文内容。保证执行的结果符合标准。
图7为本发明的网页文本解析装置的一个实施例框图。
如图7所示,本实施例的网页文本解析装置包括:
解析单元700,用于进行网页文本的网页元素的解析。
DOM树构建单元701,用于确定当前解析的网页元素为普通的javascript脚本时,构建所述普通javascript脚本对应的DOM树节点。
浏览器在进行网页的渲染前首先要根据用户请求去目标网站获取网页文本即网页的源文件,获取到网页文本后,将网页文本解析成DOM树。浏览器根据DOM树结构对网页进行排版渲染。同时网页包含很多网页元素,例如网页文本、图片和javascript脚本文件等。如果是javascript脚本文件,则要根据javascript脚本文件的类型进行相应的处理。
解析单元700进行网页文本的某一网页元素解析时,首先解析该元素的HTML标记信息,当解析到是<script>标签的网页元素时,则认为是普通的javascript脚本。
加载单元702,用于确定当前解析的网页元素为普通的javascript脚本时,加载所述普通javascript脚本以获得所述普通javascript脚本的执行文件。
加载单元702加载所述普通javascript脚本是去网页服务器获取所述普通javascript脚本的javascript执行文件。
执行单元703,完成所述普通javascript脚本加载后,执行所述普通javascript脚本的执行文件。这里javascript文件的执行包括某些运算的执行或者跟当前DOM树结构相关执行。
本实施例的网页文本解析装置,在解析单元解析出网页元素为普通的javascript脚本之后,由加载单元加载普通javascript脚本,同时由DOM构建单元构建所述普通javascript脚本对应的DOM树节点。加载单元完成普通javascript脚本加载后由执行单元执行所述普通javascript脚本。DOM节点构建单元完成所述普通javascript脚本对应的DOM树节点构建后由解析单元进行下一网页元素的解析。在进行普通javascript脚本的加载和执行时,并不停止构建所述普通javascript脚本对应的DOM树节点和下一网页元素的解析工作,加快了网页文本处理速度。进而减少了整个网页的解析、加载和渲染显示时间。还能使得普通javascript脚本元素后面的元素渲染显示提前。
图8为本发明的网页文本解析装置的另一个实施例框图。
图8所示的解析单元800、DOM树构建单元801、加载单元802与上一实施例子的析单元700、DOM树构建单元701、加载单元702实现功能原理对应相同,这里不赘述。
本实施例的解析子单元803、文本写入单元804替换了上一实施例的执行单元703。增加了标记单元805。
标记单元805用于标记所述普通javascript脚本在DOM树中的位置。
解析子单元803,用于当执行javascript代码是文档写入函数时,将所述函数中的javascript代码解析成独立的DOM结构。
文本写入单元804,用于将所述函数中的javascript代码解析成的独立的DOM结构写入到标记单元805标记的位置。
当加载单元802去网络网页服务器获取到所述普通javascript脚本的javascript文件后,会执行javascript执行文件。此时javascript执行文件为javascript执行代码。这里的javascript执行文件的执行包括某些运算的执行或者跟当前DOM树结构相关执行。而与当前DOM树结构相关执行包括执行文档写入。即执行document.write函数,将该函数中的数据流写到当前的网页文本数据流中。即当javascript执行文件是document.write函数时则确定所述javascript执行文件是要执行文档写入。
为了保持与现有的普通javascript脚本执行流程得到的结果一致,由于去网页服务器获取的所述普通javascript脚本的javascript文件也是HTML语句,也需要经过解析后,才能进行渲染,确定执行javascript文件是执行文档写入时,解析子单元803解析所述执行文件的javascript代码生成对应独立的DOM树结构。
之后由文本写入单元804,将所述独立的DOM树结构写入到标记单元805标记的位置。
本实施例的网页文本解析装置在普通javascript脚本是执行文本写入时的情况,首先在解析单元进行普通javascript脚本解析时,标记普通的javascript脚本的位置,之后在执行时将执行函数中的HTML代码解析成独立的DOM结构,写入到之前标记的位置,保证写入数据流处理之后的结果和现有标准处理结果一致。
图9示出了本发明的一种移动终端的一个实施例的结构框图。
如图9所示本实施例一种在移动终端,包括:网页文本解析装置900和渲染装置910;
其中,网页文本解析装置900包括:
解析单元901,用于进行网页文本的网页元素的解析;
DOM树构建单元902,用于确定当前解析的网页元素为普通的javascript脚本时,构建所述普通javascript脚本对应的DOM树节点;
加载单元903,用于确定当前解析的网页元素为普通的javascript脚本时,加载所述普通javascript脚本以获得所述普通javascript脚本的执行文件;
执行单元904,完成所述普通javascript脚本加载后,执行所述普通javascript脚本的执行文件;
渲染装置900,用于根据网页文本解析装置解析出的DOM树进行网页渲染显示。
其中解析单元901、DOM树构建单元902、加载单元903、执行单元904与图7所示的解析单元701、DOM树构建单元702、加载单元703、执行单元704相对应功能类似这里不赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种网页文本解析方法,包括:
确定当前解析的网页元素为普通的javascript脚本,则加载所述普通javascript脚本以获得所述普通javascript脚本的执行文件,同时构建所述普通javascript脚本对应的DOM树节点;
完成所述普通javascript脚本加载后,执行所述普通javascript脚本的执行文件;
完成所述普通javascript脚本对应的DOM树节点构建后,进行下一网页元素的解析。
2.如权利要求1所述的网页文本解析方法,其中,确定当前解析的网页元素为普通的javascript脚本后,还包括:
标记所述普通javascript脚本在DOM树中的位置;
其中,执行所述普通javascript脚本的javascript执行文件,包括:
根据所述普通javascript脚本在DOM树中的位置执行所述普通javascript脚本的javascript执行文件。
3.如权利要求2所述的网页文本解析方法,还包括:
当执行所述普通javascript脚本的javascript执行文件是要执行文档写入时,解析所述执行文件的javascript代码生成对应独立的DOM树结构,写入到标记的位置。
4.如权利要求2所述的网页文本解析方法,还包括:
当执行所述普通javascript脚本的javascript执行文件是执行访问或操作DOM节点时,仅允许访问或操作所述标记位置前面的DOM节点。
5.如权利要求3或4所述的网页文本解析方法,执行所述普通javascript脚本的javascript执行文件前,还包括:
创建执行所述javascript执行文件的执行任务;
将执行任务加入执行任务队列,其中,所述执行任务队列的执行任务执行方式是在前的任务执行完成之后再进行下一任务的执行。
6.如权利要5所述的网页文本解析方法,还包括:在判断出当前网页文本的网页元素没有完成解析时,进行下一元素的解析。
7.一种网页文本解析装置,包括:
解析单元,用于进行网页文本的网页元素的解析;
DOM树构建单元,用于确定当前解析的网页元素为普通的javascript脚本时,构建所述普通javascript脚本对应的DOM树节点;
加载单元,用于确定当前解析的网页元素为普通的javascript脚本时,加载所述普通javascript脚本以获得所述普通javascript脚本的执行文件;
执行单元,完成所述普通javascript脚本加载后,执行所述普通javascript脚本的执行文件。
8.如权利要求7所述的网页文本解析装置,还包括:
标记单元,用于标记所述普通javascript脚本在DOM树中的位置。
9.如权利要求7所述的网页文本解析装置,还包括:
解析子单元,用于执行所述普通javascript脚本的javascript执行文件是要执行文档写入时,解析所述执行文件的javascript代码生成对应独立的DOM树结构;
文本写入单元,用于将所述解析子单元解析所述执行文件的javascript代码生成的对应独立的DOM树结构写入到标记单元标记的位置。
10.一种在移动终端,包括:网页文本解析装置和渲染装置;
其中,网页文本解析装置包括:
解析单元,用于进行网页文本的网页元素的解析;
DOM树构建单元,用于确定当前解析的网页元素为普通的javascript脚本时,构建所述普通javascript脚本对应的DOM树节点;
加载单元,用于确定当前解析的网页元素为普通的javascript脚本时,加载所述普通javascript脚本以获得所述普通javascript脚本的执行文件;
执行单元,完成所述普通javascript脚本加载后,执行所述普通javascript脚本的执行文件;
渲染装置,用于根据网页文本解析装置解析出的DOM树进行网页渲染显示。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410605789.3A CN105630524B (zh) | 2014-10-31 | 2014-10-31 | 网页文本解析方法、装置和移动终端 |
PCT/CN2015/086389 WO2016065969A1 (zh) | 2014-10-31 | 2015-08-07 | 网页文本解析方法、装置和移动终端 |
US15/523,626 US20170315982A1 (en) | 2014-10-31 | 2015-08-07 | Method, device and mobile terminal for webpage text parsing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410605789.3A CN105630524B (zh) | 2014-10-31 | 2014-10-31 | 网页文本解析方法、装置和移动终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630524A true CN105630524A (zh) | 2016-06-01 |
CN105630524B CN105630524B (zh) | 2019-04-12 |
Family
ID=55856567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410605789.3A Active CN105630524B (zh) | 2014-10-31 | 2014-10-31 | 网页文本解析方法、装置和移动终端 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170315982A1 (zh) |
CN (1) | CN105630524B (zh) |
WO (1) | WO2016065969A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108287704A (zh) * | 2017-01-10 | 2018-07-17 | 北大方正集团有限公司 | web前端开发项目搭建的方法及系统 |
CN108932332A (zh) * | 2018-07-05 | 2018-12-04 | 麒麟合盛网络技术股份有限公司 | 静态资源的加载方法及装置 |
CN109542501A (zh) * | 2018-10-25 | 2019-03-29 | 平安科技(深圳)有限公司 | 浏览器表格兼容方法、装置、计算机设备及存储介质 |
CN110168496A (zh) * | 2017-01-11 | 2019-08-23 | 微软技术许可有限责任公司 | 用于应用呈现的方法和系统 |
WO2020077764A1 (zh) * | 2018-10-18 | 2020-04-23 | 网宿科技股份有限公司 | 网页加载方法、中间服务器和网页加载系统 |
WO2020077681A1 (zh) * | 2018-10-19 | 2020-04-23 | 网宿科技股份有限公司 | 一种延迟加载js脚本的方法和装置 |
CN106294658B (zh) * | 2016-08-04 | 2020-09-04 | 腾讯科技(深圳)有限公司 | 网页快速展示方法和装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11630805B2 (en) | 2020-12-23 | 2023-04-18 | Lenovo (Singapore) Pte. Ltd. | Method and device to automatically identify themes and based thereon derive path designator proxy indicia |
CN113139145B (zh) * | 2021-05-12 | 2023-03-21 | 深圳赛安特技术服务有限公司 | 页面生成方法、装置、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090259934A1 (en) * | 2008-04-11 | 2009-10-15 | Go Hazel Llc | System and method for rendering dynamic web pages with automatic ajax capabilities |
CN102622448A (zh) * | 2012-03-26 | 2012-08-01 | 中山大学 | 一种数字电视互动应用页面标记语言解析方法 |
US8504913B2 (en) * | 2007-06-08 | 2013-08-06 | Apple Inc. | Client-side components |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201130379Y (zh) * | 2007-11-19 | 2008-10-08 | 中国铁路通信信号上海工程有限公司 | 用于异步网页浏览的数据访问装置 |
CN102682093B (zh) * | 2012-04-25 | 2014-09-17 | 广州市动景计算机科技有限公司 | 一种移动浏览器网页分段加载方法及系统 |
CN102693280B (zh) * | 2012-04-28 | 2014-08-13 | 广州市动景计算机科技有限公司 | 网页浏览方法、WebApp框架、执行JavaScript方法及装置、移动终端 |
CN102915334B (zh) * | 2012-09-17 | 2015-09-16 | 广州市动景计算机科技有限公司 | 图片显示处理方法及相应的浏览器 |
-
2014
- 2014-10-31 CN CN201410605789.3A patent/CN105630524B/zh active Active
-
2015
- 2015-08-07 US US15/523,626 patent/US20170315982A1/en not_active Abandoned
- 2015-08-07 WO PCT/CN2015/086389 patent/WO2016065969A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8504913B2 (en) * | 2007-06-08 | 2013-08-06 | Apple Inc. | Client-side components |
US20090259934A1 (en) * | 2008-04-11 | 2009-10-15 | Go Hazel Llc | System and method for rendering dynamic web pages with automatic ajax capabilities |
CN102622448A (zh) * | 2012-03-26 | 2012-08-01 | 中山大学 | 一种数字电视互动应用页面标记语言解析方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294658B (zh) * | 2016-08-04 | 2020-09-04 | 腾讯科技(深圳)有限公司 | 网页快速展示方法和装置 |
CN108287704A (zh) * | 2017-01-10 | 2018-07-17 | 北大方正集团有限公司 | web前端开发项目搭建的方法及系统 |
CN110168496A (zh) * | 2017-01-11 | 2019-08-23 | 微软技术许可有限责任公司 | 用于应用呈现的方法和系统 |
CN110168496B (zh) * | 2017-01-11 | 2023-09-15 | 微软技术许可有限责任公司 | 用于应用呈现的方法和系统 |
CN108932332A (zh) * | 2018-07-05 | 2018-12-04 | 麒麟合盛网络技术股份有限公司 | 静态资源的加载方法及装置 |
WO2020077764A1 (zh) * | 2018-10-18 | 2020-04-23 | 网宿科技股份有限公司 | 网页加载方法、中间服务器和网页加载系统 |
WO2020077681A1 (zh) * | 2018-10-19 | 2020-04-23 | 网宿科技股份有限公司 | 一种延迟加载js脚本的方法和装置 |
CN109542501A (zh) * | 2018-10-25 | 2019-03-29 | 平安科技(深圳)有限公司 | 浏览器表格兼容方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105630524B (zh) | 2019-04-12 |
WO2016065969A1 (zh) | 2016-05-06 |
US20170315982A1 (en) | 2017-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105630524A (zh) | 网页文本解析方法、装置和移动终端 | |
US10333972B2 (en) | Method and apparatus for detecting hidden content of web page | |
CN105045645B (zh) | 网页加载方法、装置及系统 | |
US8949660B1 (en) | Remote deobfuscation of compressed code | |
US20180095604A1 (en) | Rendering components based on screen size | |
US9792267B2 (en) | Simplifying identification of potential non-visibility of user interface components when responsive web pages are rendered by disparate devices | |
CN106354483B (zh) | 一种数据处理方法、装置及电子设备 | |
US20120278701A1 (en) | Automatically Generating And Porting A Cascading Style Sheets ('CSS') Style Sheet | |
CN106648568B (zh) | 在表格上添加复选框的方法和装置 | |
CN114138244A (zh) | 模型类文件自动生成方法、装置、存储介质及电子设备 | |
CN104424239A (zh) | 资源文件加载方法和装置 | |
CN111078228A (zh) | 网页到小程序的转换方法、装置、服务器及存储介质 | |
CN112861481B (zh) | 分页处理的方法、装置、电子设备及计算机可读存储介质 | |
CN105320662A (zh) | 网页生成方法及装置 | |
CN105824647A (zh) | 一种表单页面生成方法和装置 | |
CN103634366A (zh) | 用于识别网络机器人的方法和设备 | |
US11030362B2 (en) | Modeling and cooperative simulation of systems with interdependent discrete and continuous elements | |
CN112486490A (zh) | 前端代码打包方法、装置、电子设备及存储介质 | |
CN105607909A (zh) | 一种基于mvc框架改进列表开发效率的方法和系统 | |
CN111435300A (zh) | web系统开发方法、装置、设备及存储介质 | |
WO2018063837A1 (en) | Video generation of project revision history | |
WO2012140540A1 (en) | A digital netlist partitioning system for faster circuit reverse-engineering | |
US20140074869A1 (en) | Autoclassifying compound documents for enhanced metadata search | |
CN112257360B (zh) | 用于数据波形的调试方法、装置、调试系统以及存储介质 | |
CN116009863B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200612 Address after: 310052 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: 510627 Guangdong city of Guangzhou province Whampoa Tianhe District Road No. 163 Xiping Yun Lu Yun Ping B radio 14 floor tower square Patentee before: GUANGZHOU UCWEB COMPUTER TECHNOLOGY Co.,Ltd. |
|
TR01 | Transfer of patent right |