CN107368546A - 一种生成文章大纲的方法和装置 - Google Patents
一种生成文章大纲的方法和装置 Download PDFInfo
- Publication number
- CN107368546A CN107368546A CN201710508684.XA CN201710508684A CN107368546A CN 107368546 A CN107368546 A CN 107368546A CN 201710508684 A CN201710508684 A CN 201710508684A CN 107368546 A CN107368546 A CN 107368546A
- Authority
- CN
- China
- Prior art keywords
- node
- title
- content
- parameter nodes
- article
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000007667 floating Methods 0.000 claims description 24
- 230000008859 change Effects 0.000 claims description 7
- 230000001052 transient effect Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 3
- 238000012790 confirmation Methods 0.000 claims description 3
- 230000005055 memory storage Effects 0.000 claims description 2
- 230000000875 corresponding effect Effects 0.000 description 24
- 238000000151 deposition Methods 0.000 description 5
- 241000208340 Araliaceae Species 0.000 description 3
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 3
- 235000003140 Panax quinquefolius Nutrition 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 235000008434 ginseng Nutrition 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 210000004209 hair Anatomy 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种生成文章大纲的方法和装置,所述方法包括:S1,根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;S2,根据所述标题内容,生成与所述文章内容对应的文章大纲。本发明通过前端获取文章内容中包含的标题内容并生成文章大纲,实现了用户在浏览文章时,能够通过前端生成文章大纲,与现有技术中的通过后端服务器生成大纲的方法相比,减少了后端服务器的负担。
Description
技术领域
本发明涉及程序开发领域,具体涉及一种生成文章大纲的方法和装置。
背景技术
随着互联网的高速发展,网站的前端发生了翻天覆地的变化。网页不再只是承载单一的文字和图片,各种富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验。
现有技术中,若需要在浏览器页面中生成文章大纲,并使用户通过点击大纲标题能够跳转到相应文章的位置,通常采用后端服务器生成文章大纲的内容,在前端页面展示样式的方式;用户在页面进行文章浏览时,需要在后端服务器生成标题内容后发送至前端进行展示。而为了实现上述功能,采用的是a标签加上href属性的实现方式。其中,a标签的href属性是用于指定超链接目标的URL;如果用户选择了a标签中的内容,那么浏览器会尝试检索并显示href属性指定的URL所表示的文档,或者执行JavaScript表达式、方法和函数的列表。
因此,现有技术至少存在以下技术缺陷:采用a标签加上href属性的实现方式,每个用户浏览文章都会通过后端服务器生成相应的标题内容,增加了后端服务器的负担。
发明内容
针对现有技术中存在的上述技术缺陷,本发明提供一种生成文章大纲的方法和装置。
本发明的一方面提供一种生成文章大纲的方法,包括:S1,根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;S2,根据所述标题内容,生成与所述文章内容对应的文章大纲。
其中,所述步骤S1进一步包括:S11,获取所述文章内容中的起始节点,并指定所述起始节点作为参数节点;S12,若确认所述参数节点为标题节点,则获取所述参数节点中的标题内容,并将所述标题内容存储至标题数组;S13,若获取到所述参数节点的直接子节点,则指定所述直接子节点作为所述参数节点以重复执行步骤S12和步骤S13;否则,指定所述参数节点的相邻兄弟节点作为所述参数节点以重复执行步骤S12和步骤S13,直到无法获取所述参数节点的相邻兄弟节点。
其中,所述步骤S12还包括:若确认所述参数节点为浮动帧节点,则获取所述参数节点内的文档流;相应地,所述步骤S13还包括:指定所述文档流赋值的节点作为所述参数节点以执行步骤S12。
其中,所述步骤S12中的若确认所述参数节点为标题节点,则获取所述参数节点中的标题内容,并将所述标题内容存储至标题数组进一步包括:获取所述参数节点的标签名;确认所述参数节点的标签名为标题标签名后,创建空对象;根据所述参数节点对所述空对象进行赋值,并将赋值后的所述空对象尾插至所述标题数组。
其中,所述步骤S12中的根据所述参数节点对所述空对象进行赋值进一步包括:根据所述参数节点的标签名对所述空对象的类名属性赋值,根据所述参数节点的标识属性对所述空对象的链接属性赋值以及根据所述参数节点的标题内容对所述空对象的值属性赋值。
其中,所述步骤S12中的确认所述参数节点的标签名为标题标签名后还包括:判断所述标题内容是否存在重名情况;若所述标题内容存在重名情况,则更改所述标题内容,并将更改后的所述标题内容赋值至所述参数节点的标识属性。
其中,所述步骤S2进一步包括:若判断页面嵌套了浮动帧节点,则获取所述浮动帧节点内嵌的文档流;根据所述文档流内标题节点与所述标题节点的父节点之间的偏移高度,设置文档主体节点的偏移高度。
本发明另一方面提供一种生成文章大纲的装置,包括:获取模块,用于根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;生成模块,用于根据所述标题内容,生成与所述文章内容对应的文章大纲。
本发明又一方面提供一种生成文章大纲的设备,包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本发明提供的生成文章大纲的方法,例如包括:S1,根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;S2,根据所述标题内容,生成与所述文章内容对应的文章大纲。
本发明又一方面提供一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本发明提供的生成文章大纲的方法,例如包括:S1,根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;S2,根据所述标题内容,生成与所述文章内容对应的文章大纲。
本发明提供的生成文章大纲的方法和装置,通过前端获取文章内容中包含的标题内容并生成文章大纲,实现了用户在浏览文章时,能够通过前端生成文章大纲,与现有技术中的通过后端服务器生成大纲的方法相比,减少了后端服务器的负担。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的生成文章大纲的方法的流程示意图;
图2为本发明实施例提供的生成文章大纲的装置的结构示意图;
图3为本发明实施例提供的生成文章大纲的设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的生成文章大纲的方法的流程示意图,如图1所示,包括:S1,根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;S2,根据所述标题内容,生成与所述文章内容对应的文章大纲。
其中,前端对于网站来说,通常是指网站的前台部分,该部分包括网站的表现层和结构层。因此前端技术一般分为前端设计和前端开发,前端设计一般可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括基本的HTML和CSS以及JavaScript/ajax,现在最新的高级版本HTML5、CSS3以及SVG等。
其中,节点(DOM)即“文档对象模型”。基于语义的逻辑结构,DOM将网页内的元素与内容呈现为一个清晰、易读的树状模型。在这个理想化的树状模型中,任何一个元素或是内容,都只有自己唯一的一个节点。即便这个文档拥有巨量的内容与繁复的结构,只要它本身语义逻辑没有错误,那么用DOM都可以轻易地将这个文档中的任意一个元素或内容检索出来。简而言之,对于网页前端开发人员而言,DOM就是一个用于检索网页内任意元素或内容的索引目录。标题节点是文章内容的节点中,用于存放标题内容的节点。
其中,文章内容为预先渲染好的文章;标题内容即为文章的标题的具体内容,通过标题节点的innerText属性,可以获取到标题节点的标题内容;文章大纲是指根据文章的各标题所生成的大纲,用户可以点击大纲组件上的标题,跳转到文章中与该标题对应的位置,方便用户阅读文章。
在步骤S1中,当前端页面上的文章内容渲染完毕之后,可以通过前端获取文章内容的标题节点中包含的标题内容。例如,获取body节点下的全部标题节点所包含的标题内容。可以通过多种方法获取文章节点及文章节点的子节点的标题内容,例如采用递归循环的方法,遍历节点后,获取标题内容。
在步骤S2中,根据步骤S1获取的标题内容,对标题内容进行大纲组件的渲染,渲染后就可以得到该文章内容所对应的文章大纲。
本发明实施例提供的生成文章大纲的方法,通过前端获取文章内容中包含的标题内容并生成文章大纲,实现了用户在浏览文章时,能够通过前端生成大纲,与现有技术中的通过后端服务器生成大纲的方法相比,减少了后端服务器的负担。
在上述各实施例的基础上,所述步骤S1进一步包括:S11,获取所述文章内容中的起始节点,并指定所述起始节点作为参数节点;S12,若确认所述参数节点为标题节点,则获取所述参数节点中的标题内容,并将所述标题内容存储至标题数组;S13,若获取到所述参数节点的直接子节点,则指定所述直接子节点作为所述参数节点以重复执行步骤S12和步骤S13;否则,指定所述参数节点的相邻兄弟节点作为所述参数节点以重复执行步骤S12和步骤S13,直到无法获取所述参数节点的相邻兄弟节点。
具体地,本发明实施例可以采用递归循环的方式获取文章节点的标题内容。
其中,起始节点是文章内容中包含的任一节点,例如可以指定body节点作为起始节点,那么获取的标题内容即为body节点下的标题节点所包含的标题内容。
其中,参数节点是用于标识需要获取标题内容的节点。参数节点有预设的处理方法,能够获取与参数节点对应的标题内容;因此,可以指定任一节点作为参数节点以获得与该任一节点对应的标题内容。
其中,标题数组是用于存放标题内容的数组。例如,可以在前端进行标题获取操作前定义一个全局变量,即标题数组(titleArr(Array)),在递归循环过程中,将获取到的标题内容存储至标题数组。
其中,直接子节点是与文章节点直接连接的节点,例如,若节点为1,则节点1.1和节点1.2为节点1的直接子节点,但与节点1.1相连的1.1.1不为节点1的直接子节点。
其中,相邻兄弟节点是相邻且具有相同父节点的节点,例如同与节点1连接的节点1.1和节点1.2为相邻兄弟节点。前端可以通过参数节点的nextElementSibling属性获取参数节点的相邻兄弟节点。
在步骤S11中,首先可以获取起始节点,然后将该起始节点作为参数节点以进入步骤S12进行相应处理。若没有指定起始节点时,可以默认指定body节点作为参数节点。
在步骤S12中,根据步骤S11传入的参数节点,为了获取到标题内容,而标题内容由标题节点获得,因此需要对参数节点是否为标题节点进行判断;在确认参数节点为标题节点后,通过参数节点的innerText属性获取该参数节点的标题内容(innerText),并将标题内容存储在标题数组中。
在步骤S13中,在步骤S12中将标题内容存储在标题数组之后,去获取参数节点的直接子节点(firstElementChild);如果能获取到直接子节点,则指定直接子节点为参数节点以重复执行上述步骤S12和S13。另外,如果存在多个直接子节点,则可以同时获取多个直接子节点并分别重复执行步骤S12和S13。
如果不能获取参数节点的直接子节点,则去获取参数节点的相邻兄弟节点,并指定相邻兄弟节点为参数节点以重复执行步骤S12和S13,直到无法获取相邻兄弟节点。
以下举例说明上述步骤S11~步骤S13。在步骤S11中,首先获取起始节点1作为参数节点。
通过递归循环处理,前端能够自动获取文章内容中的标题内容,减小了后端服务器的压力和编程人员的工作量。
在上述各实施例的基础上,所述步骤S12还包括:若确认所述参数节点为浮动帧节点,则获取所述参数节点内的文档流;相应地,所述步骤S13还包括:指定所述文档流赋值的节点作为所述参数节点以执行步骤S12。
其中,浮动帧节点又可称为Iframe标签,可以通过浮动帧节点将一个HTML文档嵌入在另一个HTML中显示。Iframe标签不同于Frame标签最大的特征在于所引用的HTML文件不是与另外的HTML文件相互独立显示,而是可以直接嵌入在一个HTML文件中,与这个HTML文件内容相互融合,成为一个整体;另外,还可以多次在一个页面内显示同一内容,而不必重复写内容,一个形象的比喻即“画中画”电视。
具体地,当页面存在浮动帧标签的情况下,为了获取浮动帧标签内嵌文档流中的标题内容,若在步骤S12中确认参数节点为浮动帧节点,则将浮动帧节点内的文档流导出。相应地,在步骤S13中,可以将文档流赋值给一个节点,并指定赋值的节点作为参数节点,执行步骤S12以获取文档流中包含的标题内容。
例如,导出浮动帧节点内的文档流可以通过如下方法:在确认参数节点为浮动帧节点后,判断参数节点的node.contentWindow属性是否存在,若存在,则将node(节点)赋值为node.contentWindow.document.body;若不存在,将node赋值为node.contentDocument.body;上述两种赋值方式均是将参数节点内的文档流赋值给节点,以执行步骤S12。
通过对参数节点是否为浮动帧节点进行判断,能够获取到浮动帧节点内嵌的标题内容,解决了页面嵌套浮动帧节点时无法获取嵌套页面内部文档流的问题。
在上述各实施例的基础上,所述步骤S12中的若确认所述参数节点为标题节点,则获取所述参数节点中的标题内容,并将所述标题内容存储至标题数组进一步包括:获取所述参数节点的标签名;确认所述参数节点的标签名为标题标签名后,创建空对象;根据所述参数节点对所述空对象进行赋值,并将赋值后的所述空对象尾插至所述标题数组。
具体地,可以通过判断参数节点的标签名是否为标题标签名来确认参数节点是否为标题节点。例如,通过参数节点的tagName属性获取当前节点的标签名,若标签名为H1~H9标签,则判断参数节点为标题节点;否则,参数节点不为标题节点。
在判断参数节点为标题节点后,可以创建一个取名为liNode的空对象,将每个被判断为标题节点的参数节点的标题内容赋值给liNode后,将liNode尾插进titleArr数组,以实现将标题内容存储至标题数组。
在上述各实施例的基础上,所述步骤S12中的根据所述参数节点对所述空对象进行赋值进一步包括:根据所述参数节点的标签名对所述空对象的类名属性赋值,根据所述参数节点的标识属性对所述空对象的链接属性赋值以及根据所述参数节点的标题内容对所述空对象的值属性赋值。
具体地,创建一个空对象取名为liNode后,可以将liNode的类名属性(className属性)赋值为’style-’加上参数节点的标签名;将liNode的链接属性(href属性)赋值为参数节点的标识属性(id属性);将liNode的值属性(value属性)赋值为参数节点的标题内容(innerText),然后将该liNode尾插进titleArr数组。
在上述各实施例的基础上,所述步骤S12中的确认所述参数节点的标签名为标题标签名后还包括:判断所述标题内容是否存在重名情况;若所述标题内容存在重名情况,则更改所述标题内容,并将更改后的所述标题内容赋值至所述参数节点的标识属性。
为了解决标题内容相同时,用户点击文章大纲跳转不准确的问题,本发明实施例提供的生成文章大纲的方法还对标题内容相同时,对标题内容进行更改,具体如下:
通过参数节点的innerText属性获取该参数节点的标题内容(innerText),并将标题内容存放在newId变量中;通过查询预先定义的名称树(nameTree)中是否已经存在以当前newId变量为属性名的属性来判断是否有重名状况;其中,nameTree(Object)是用来存放标题名字的全局变量。
若存在重名的标题内容,则将newId变量加上nameTree中以当前标题内容为属性名的属性对应的值,并以字符串’-’串联,并将当前nameTree中对应的属性值加一。
若不存在重名的标题内容,则在nameTree中声明对应属性,并将其值赋为1;将newId变量赋值给参数节点的id属性(若节点已存在id属性,需要将newId尾加在id属性后面,并用空格隔开)。
通过更改重名的标题内容,解决了标题内容相同时,用户点击文章大纲跳转不准确的问题。
为了更好的理解本发明实施例提供的生成文章大纲的方法,以下举例说明上述步骤S1,但本发明实施例的保护范围不限于此。
通过浏览器将页面上文章内容渲染完毕之后,可以从指定节DOM点(若没有指定DOM节点,则从body节点)开始当作起始节点进行递归循环,以下是获取标题内容的递归算法步骤:
(在进行递归之前需要声明递归中用到的全局变量,全局变量包括:
nameTree(Object):用来存放标题名字,防止标题重名导致页面跳转时发生错误;
titleArr(Array):用来存放页面所有标题的数组;
hasIfram(boolean):用来记录页面是否存在iframe标签;
步骤1,从传入递归的参数获取参数节点,判断该参数节点是否存在,若不存在则直接返回,结束此次递归调用;若参数节点存在,进入步骤2;
步骤2,通过参数节点的tagName属性获取当前节点的标签名,若标签名为H1~H9标签,进入步骤3;若标签名不为H1~H9标签,进入步骤4。
步骤3,通过参数节点的innerText属性获取该标签的innerText(即标题内容)存放在newId变量中,通过查询nameTree中是否已经存在以当前newId变量为属性名的属性来判断是否有重名状况;
若存在重名的标题内容,则将newId变量加上nameTree中以当前标题内容为属性名的属性对应的值,并以字符串’-’串联,将当前nameTree中对应的属性值加一;
若不存在重名的标题内容,则声明nameTree中对应属性,并将其值赋为1;将newId变量赋值给当前节点的id属性(若节点已存在id属性,需要将newId尾加在id属性后面,用空格隔开);
创建一个空对象取名为liNode;
将liNode的className属性赋值为’style-’加上当前节点的标签名;
将liNode的href属性赋值为当前节点的id属性;
将liNode的value属性赋值为当前节点的innerText;
然后,将该liNode尾插进titleArr数组。
本步骤的优势是,前端获取数据,减缓了后端服务器的压力。并且可以将标题使用的标签(H1~H9)进行区分,方便进行不同标签的区分展示。同时处理了标题内容相同的情况,解决了标题相同时,点击文章大纲跳转不准确的问题。
步骤4,声明一个变量node赋值为当前节点判断该节点标签是否为iframe标签;若为iframe标签,进入步骤5;否则进入步骤6。
步骤5,将hasIframe置为true,并且判断node.contentWindow属性是否存在;
若存在,将node赋值为node.contentWindow.document.body;
若不存在,将node赋值为node.contentDocument.body.进入步骤7。
本步骤的优势是,当页面存在iframe嵌套时,也可以爬取到iframe内部的标题数据,解决了页面嵌套iframe时,无法获取嵌套页面内部数据的问题。
步骤6,将node赋值为当前节点内部的直接子节点(firstElementChild),进入步骤7。
步骤7,判断该节点是否存在,若存在进入步骤8,否则结束当前循环;
步骤8,将步骤7中的节点当作参数传入步骤1,进行递归循环;循环完毕之后,通过该节点的nextElementSibling属性获取到当前节点的相邻兄弟节点,进入步骤7。
通过上述步骤即可以爬取到整个文章的标题内容,同时生成一个包含所有标题内容的标题数组,并且将文章的所有标题添加了一个特殊的id,用来进行点击文章大纲的调整操作。
在上述各实施例的基础上,所述步骤S2进一步包括:若判断页面嵌套了浮动帧节点,则获取所述浮动帧节点内嵌的文档流;根据所述文档流内标题节点与所述标题节点的父节点之间的偏移高度,设置文档主体节点的偏移高度。
具体地,在步骤S1中获取了标题内容后,在步骤S2中对标题内容进行渲染,生成文章大纲的组件。而为了解决页面嵌套了浮动帧节点时无法对浮动帧节点内嵌的文档流进行跳转,本发明实施例通过获取文档流内标题节点与父节点之间的偏移高度后,根据偏移高度设置文档主体节点的偏移高度。为了更好的理解,实现的方法大致如下:
关于如何区分大纲标签(H1~H9),文章大纲通过ul标签内嵌套的li标签来将所有标题进行排序,此时在各节点上不区分标题节点;根据不同的标题节点具有不同的类名(className),通过使用css进行大小标题的样式区分;
关于如何实现点击文章大纲跳转至对应位置,通过上面的步骤S12,已经将标题节点的id属性进行了重新赋值,并且记录了此id;普通页面还是使用常规方法进行页面位置跳转,即使用浏览器自带的行为,点击a标签时,页面会自动跳转到以a标签的href属性所带值为id值的节点处;
若判断页面嵌套了浮动帧标签(iframe),则无法使用浏览器自带的行为,需要通过id获取到要跳转的标题节点的偏移量来进行手动改变body的偏移量来进行页面跳转;应当说明的是,如果id相同,则只会跳转到找到的第一个节点位置,由于在本方法中,id使用的是标题内容,而标题内容很可能会产生重复,所以在步骤S12中,若标题内容重复时,会通过在标题后面加上数字来保证id唯一性,成功的解决了重复标题跳转不准确的问题,具体步骤如下:
步骤1,先渲染一个ul标签,在ul标签内通过数组map方法,动态将titleArr中每一项渲染成一个li标签;
步骤2,将li标签的class赋值为对应项中的className(此处实现区分标题标签);
步骤3,在li标签内渲染一个a标签,将a标签的href属性赋值为titleArr中对应项的href属性;将a标签中的内容赋值为titleArr中对应项的value;
步骤4,覆盖a标签的点击事件(此处实现嵌套iframe的页面跳转指定位置);
首先判断页面是否嵌套了浮动帧标签,若判断存在,则获取当前iframe内嵌的文档流document,通过a标签的href属性获取对应标题的id,再通过id用iframe中的文档流document获取到文章对应的标题节点;
通过标题节点的偏移属性(offsetTop属性)获取标题节点距其父节点的偏移高度(offsetTop)(此时可以根据具体的需求以相同的方法加上其父节点距离更上一层节点的偏移高度,这样层层计算直到得到距离文章起始位置的偏移高度)。然后,将外层页面主体节点(body节点)的scrollTop偏移相应的高度,即设置偏移高度,实现嵌套iframe的页面点击大纲内容文章跳转对应位置的需求。
图2为本发明实施例提供的生成文章大纲的装置的结构示意图,如图2所示,包括:获取模块201,用于根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;生成模块202,用于根据所述标题内容,生成与所述文章内容对应的文章大纲。
其中,当前端页面上的文章内容渲染完毕之后,可以通过获取模块201获取文章内容的标题节点中包含的标题内容。例如,获取body节点下的全部标题节点所包含的标题内容。获取模块201可以通过多种方法获取文章节点及文章节点的子节点的标题内容,例如采用递归循环的方法,遍历节点后,获取标题内容。
其中,生成模块202根据获取模块201获取的标题内容,对标题内容进行大纲组件的渲染,渲染后就可以得到该文章内容所对应的文章大纲。
本发明实施例提供的生成文章大纲的装置,通过前端获取文章内容中包含的标题内容并生成文章大纲,实现了用户在浏览文章时,能够通过前端生成大纲,与现有技术中的通过后端服务器生成大纲的方法相比,减少了后端服务器的负担。
图3为本发明实施例提供的生成文章大纲的设备的结构示意图,如图3所示,该设备包括:至少一个处理器301;以及与所述处理器301通信连接的至少一个存储器302,其中:所述存储器302存储有可被所述处理器301执行的程序指令,所述处理器301调用所述程序指令能够执行上述各实施例所提供的生成文章大纲的方法,例如包括:S1,根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;S2,根据所述标题内容,生成与所述文章内容对应的文章大纲。
本发明实施例还提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行对应实施例所提供的生成文章大纲的方法,例如包括:S1,根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;S2,根据所述标题内容,生成与所述文章内容对应的文章大纲。
以上所描述的生成文章大纲的设备等实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。
本发明实施例提供的生成文章大纲的方法、装置和设备,大大的减轻了后端服务器的压力,并且解决了在页面存在iframe的情况下无法获取iframe内部标题的问题,同时也解决了在文章标题内容相同时,如何在点击大纲后文章准确跳转的问题。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种生成文章大纲的方法,其特征在于,包括:
S1,根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;
S2,根据所述标题内容,生成与所述文章内容对应的文章大纲。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1进一步包括:
S11,获取所述文章内容中的起始节点,并指定所述起始节点作为参数节点;
S12,若确认所述参数节点为标题节点,则获取所述参数节点中的标题内容,并将所述标题内容存储至标题数组;
S13,若获取到所述参数节点的直接子节点,则指定所述直接子节点作为所述参数节点以重复执行步骤S12和步骤S13;
否则,指定所述参数节点的相邻兄弟节点作为所述参数节点以重复执行步骤S12和步骤S13,直到无法获取所述参数节点的相邻兄弟节点。
3.根据权利要求2所述的方法,其特征在于,所述步骤S12还包括:
若确认所述参数节点为浮动帧节点,则获取所述参数节点内的文档流;
相应地,所述步骤S13还包括:
指定所述文档流赋值的节点作为所述参数节点以执行步骤S12。
4.根据权利要求2所述的方法,其特征在于,所述步骤S12中的若确认所述参数节点为标题节点,则获取所述参数节点中的标题内容,并将所述标题内容存储至标题数组进一步包括:
获取所述参数节点的标签名;
确认所述参数节点的标签名为标题标签名后,创建空对象;
根据所述参数节点对所述空对象进行赋值,并将赋值后的所述空对象尾插至所述标题数组。
5.根据权利要求4所述的方法,其特征在于,所述步骤S12中的根据所述参数节点对所述空对象进行赋值进一步包括:
根据所述参数节点的标签名对所述空对象的类名属性赋值,根据所述参数节点的标识属性对所述空对象的链接属性赋值以及根据所述参数节点的标题内容对所述空对象的值属性赋值。
6.根据权利要求4所述的方法,其特征在于,所述步骤S12中的确认所述参数节点的标签名为标题标签名后还包括:
判断所述标题内容是否存在重名情况;
若所述标题内容存在重名情况,则更改所述标题内容,并将更改后的所述标题内容赋值至所述参数节点的标识属性。
7.根据权利要求6所述的方法,其特征在于,所述步骤S2进一步包括:
若判断页面嵌套了浮动帧节点,则获取所述浮动帧节点内嵌的文档流;
根据所述文档流内标题节点与所述标题节点的父节点之间的偏移高度,设置文档主体节点的偏移高度。
8.一种生成文章大纲的装置,其特征在于,包括:
获取模块,用于根据文章内容,通过前端获取所述文章内容中标题节点的标题内容;
生成模块,用于根据所述标题内容,生成与所述文章内容对应的文章大纲。
9.一种生成文章大纲的设备,其特征在于,包括:
至少一个处理器;
以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710508684.XA CN107368546B (zh) | 2017-06-28 | 2017-06-28 | 一种生成文章大纲的方法和装置 |
PCT/CN2017/120130 WO2019000894A1 (zh) | 2017-06-28 | 2017-12-29 | 一种生成文章大纲的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710508684.XA CN107368546B (zh) | 2017-06-28 | 2017-06-28 | 一种生成文章大纲的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368546A true CN107368546A (zh) | 2017-11-21 |
CN107368546B CN107368546B (zh) | 2020-05-12 |
Family
ID=60305668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710508684.XA Active CN107368546B (zh) | 2017-06-28 | 2017-06-28 | 一种生成文章大纲的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107368546B (zh) |
WO (1) | WO2019000894A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019000894A1 (zh) * | 2017-06-28 | 2019-01-03 | 武汉斗鱼网络科技有限公司 | 一种生成文章大纲的方法和装置 |
CN109522523A (zh) * | 2018-09-14 | 2019-03-26 | 维沃移动通信有限公司 | 一种显示大纲信息的方法及终端设备 |
CN111046629A (zh) * | 2019-12-16 | 2020-04-21 | 北大方正集团有限公司 | 大纲显示方法、装置及设备 |
CN112084753A (zh) * | 2020-09-14 | 2020-12-15 | 苏州七星天专利运营管理有限责任公司 | 一种文档辅助编辑的方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090112813A1 (en) * | 2007-10-24 | 2009-04-30 | Searete Llc | Method of selecting a second content based on a user's reaction to a first content of at least two instances of displayed content |
CN103365877A (zh) * | 2012-03-29 | 2013-10-23 | 百度在线网络技术(北京)有限公司 | 对网页进行转码后建立目录的方法以及服务器 |
CN103389895A (zh) * | 2012-08-30 | 2013-11-13 | 爱乐活(北京)科技有限公司 | 一种前端页面的生成方法及系统 |
CN106502663A (zh) * | 2016-10-17 | 2017-03-15 | 成都知道创宇信息技术有限公司 | 一种前端项目框架生成方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020019842A1 (en) * | 2000-06-09 | 2002-02-14 | Law George R. | Automated subscriber document directory system |
US8037053B2 (en) * | 2008-10-31 | 2011-10-11 | Yahoo! Inc. | System and method for generating an online summary of a collection of documents |
CN103389982A (zh) * | 2012-05-08 | 2013-11-13 | 玉鹏 | 一种基于动态网页的计算机文件及目录浏览方法及系统 |
CN107368546B (zh) * | 2017-06-28 | 2020-05-12 | 武汉斗鱼网络科技有限公司 | 一种生成文章大纲的方法和装置 |
-
2017
- 2017-06-28 CN CN201710508684.XA patent/CN107368546B/zh active Active
- 2017-12-29 WO PCT/CN2017/120130 patent/WO2019000894A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090112813A1 (en) * | 2007-10-24 | 2009-04-30 | Searete Llc | Method of selecting a second content based on a user's reaction to a first content of at least two instances of displayed content |
CN103365877A (zh) * | 2012-03-29 | 2013-10-23 | 百度在线网络技术(北京)有限公司 | 对网页进行转码后建立目录的方法以及服务器 |
CN103389895A (zh) * | 2012-08-30 | 2013-11-13 | 爱乐活(北京)科技有限公司 | 一种前端页面的生成方法及系统 |
CN106502663A (zh) * | 2016-10-17 | 2017-03-15 | 成都知道创宇信息技术有限公司 | 一种前端项目框架生成方法 |
Non-Patent Citations (1)
Title |
---|
敬国东: "网页动态目录树的设计与实现", 《电脑编程技巧与维护》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019000894A1 (zh) * | 2017-06-28 | 2019-01-03 | 武汉斗鱼网络科技有限公司 | 一种生成文章大纲的方法和装置 |
CN109522523A (zh) * | 2018-09-14 | 2019-03-26 | 维沃移动通信有限公司 | 一种显示大纲信息的方法及终端设备 |
CN111046629A (zh) * | 2019-12-16 | 2020-04-21 | 北大方正集团有限公司 | 大纲显示方法、装置及设备 |
CN111046629B (zh) * | 2019-12-16 | 2022-03-01 | 北大方正集团有限公司 | 大纲显示方法、装置及设备 |
CN112084753A (zh) * | 2020-09-14 | 2020-12-15 | 苏州七星天专利运营管理有限责任公司 | 一种文档辅助编辑的方法和系统 |
CN112084753B (zh) * | 2020-09-14 | 2021-06-29 | 苏州七星天专利运营管理有限责任公司 | 一种文档辅助编辑的方法和系统 |
CN113221516A (zh) * | 2020-09-14 | 2021-08-06 | 苏州七星天专利运营管理有限责任公司 | 一种文档辅助编辑的方法和系统 |
CN113255303A (zh) * | 2020-09-14 | 2021-08-13 | 苏州七星天专利运营管理有限责任公司 | 一种文档辅助编辑的方法和系统 |
CN113312884A (zh) * | 2020-09-14 | 2021-08-27 | 苏州七星天专利运营管理有限责任公司 | 一种文档辅助编辑的方法和系统 |
CN113221516B (zh) * | 2020-09-14 | 2021-11-30 | 苏州七星天专利运营管理有限责任公司 | 一种文档辅助编辑的方法和系统 |
CN113312884B (zh) * | 2020-09-14 | 2022-02-08 | 苏州七星天专利运营管理有限责任公司 | 一种文档辅助编辑的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107368546B (zh) | 2020-05-12 |
WO2019000894A1 (zh) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8230320B2 (en) | Method and system for social bookmarking of resources exposed in web pages that don't follow the representational state transfer architectural style (REST) | |
US7373606B2 (en) | Method for visualizing weblog social network communities | |
CA2602852C (en) | Method and apparatus for customizing the display of multidimensional data | |
CN103597469B (zh) | 集成开发环境中的实况浏览器工具 | |
MacDonald | Creating a website: the missing manual | |
CN101788991B (zh) | 一种更新提醒的方法及系统 | |
US8468145B2 (en) | Indexing of URLs with fragments | |
CN103678511B (zh) | 根据可视化模板进行网页内容抽取的方法及装置 | |
CN102708174B (zh) | 一种浏览器中的富媒体信息的展示方法和装置 | |
CN107368546A (zh) | 一种生成文章大纲的方法和装置 | |
CN104239298B (zh) | 文本信息推荐方法、服务器、浏览器及系统 | |
CN110069683B (zh) | 一种基于浏览器爬取数据的方法及装置 | |
US20110078140A1 (en) | Method and system for user guided search navigation | |
JP2016154052A (ja) | ウェブページ情報を抽出する方法およびシステム | |
CN106407371A (zh) | 用户的评论数据展现方法、系统、服务器和客户端 | |
CN103678509B (zh) | 生成网页模板的方法及装置 | |
CN106663108A (zh) | 用于原生应用的深链接 | |
CN109241474A (zh) | 页面信息的提供、展示、发布方法、服务器及客户端 | |
US11625448B2 (en) | System for superimposed communication by object oriented resource manipulation on a data network | |
CN103838862B (zh) | 一种视频搜索的方法、装置及终端 | |
CN108334508A (zh) | 网页信息的提取方法和装置 | |
CN111382192B (zh) | 一种数据列表展示方法、装置和电子设备 | |
CN109543128A (zh) | 一种基于编程语言的前端框架项目实现方法及电子设备 | |
CN104090757A (zh) | 针对浏览器的富媒体信息展示方法 | |
CN108595697A (zh) | 网页集成方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240129 Address after: Room 801, 85 Kefeng Road, Huangpu District, Guangzhou City, Guangdong Province Patentee after: Yami Technology (Guangzhou) Co.,Ltd. Country or region after: China Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. Country or region before: China |