CN103425388A - 一种操作html页面宿主窗口的方法和装置 - Google Patents
一种操作html页面宿主窗口的方法和装置 Download PDFInfo
- Publication number
- CN103425388A CN103425388A CN2012101634908A CN201210163490A CN103425388A CN 103425388 A CN103425388 A CN 103425388A CN 2012101634908 A CN2012101634908 A CN 2012101634908A CN 201210163490 A CN201210163490 A CN 201210163490A CN 103425388 A CN103425388 A CN 103425388A
- Authority
- CN
- China
- Prior art keywords
- host window
- label
- content
- property value
- window
- 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
- User Interface Of Digital Computer (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种操作HTML页面宿主窗口的方法和装置。该方法包括:识别HTML页面内容中用于操作宿主窗口的HTML标签,读取用于操作宿主窗口的HTML标签的属性值,根据读取的用于操作宿主窗口的HTML标签的属性值,对宿主窗口执行相应的操作。应用本发明能够改善对HTML页面宿主窗口的操作效果。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种操作HTML页面宿主窗口的方法和装置。
背景技术
超文本标记语言(Hypertext Markup Language,HTML),是用于描述网页文档的一种标记语言。
网页文档本身是一种文本文件,采用HTML描述网页文档内容,具体通过在文本文件中添加HTML标签,可以告诉浏览器如何显示网页文档中的内容例如,文字如何处理,画面如何安排,图片如何显示等。采用HTML描述的网页文档内容,也可以称为HTML页面内容。浏览器按顺序阅读采用HTML描述的网页文档内容,即HTML页面内容,然后根据HTML标签解释和显示相应的内容。
其中,HTML标签是HTML结构上的最小元素单元,每个HTML标签对应HTML页面内容的DOM树中的一个节点,其中的节点,是根据HTML页面内容中标签的父子关系而生成的DOM树中的最小单元。
浏览器为了展示HTML页面内容,而生成的用于展示HTML页面内容的窗口,可以称为该HTML页面的宿主窗口。要实现通过宿主窗口浏览HTML页面内容,常常需要对操作宿主窗口进行操作,例如,对宿主窗口的长度、高度、是否可以最大化等属性进行配置,拖动宿主窗口,弹出菜单等。
按照操作类型的不同,对HTML页面宿主窗口的操作可以包括操作HTML页面宿主窗口的属性,拖动HTML页面宿主窗口,在HTML页面宿主窗口中弹出菜单等。
目前,对HTML页面宿主窗口进行上述操作的方法包括:
操作HTML页面宿主窗口的属性的方法为:浏览器首先打开一个长度和高度不可控的临时页面窗口,在该临时页面内调用javascript的window.open()这个应用程序接口(API),弹出一个长高可控的新窗口,然后关闭这个临时页面窗口。window.open()这个API可以配置新窗口的位置、长度、高度、是否使用滚动条、是否能改变窗口大小等少量窗口属性。
拖动HTML页面宿主窗口的方法为:通过javascript监听鼠标事件,用鼠标事件产生的坐标计算出窗口应产生的位移,再利用javascript的API接口改变宿主窗口的坐标位置。
在HTML页面宿主窗口中弹出菜单的方法为:通过产生鼠标事件,判断产生该鼠标事件所在位置下的HTML标签类型,根据HTML标签类型配置菜单项,即配置需要显示的菜单内容,然后使用API接口TrackPopupMenu弹出对应的菜单内容。其中,由于菜单内容是由API接口TrackPopupMenu弹出的,而用户对菜单选项的选择消息会反馈到处理这个菜单消息的窗口过程中,因此,如果想增加菜单项或者改变菜单项,必须修改源代码中的窗口过程,进而导致需要用户升级浏览器客户端。
可见,目前对HTML页面宿主窗口进行上述操作的方法,均是通过javascript的API接口实现的。通过javascript的API接口对HTML页面宿主窗口进行操作,其操作效果通常较差,例如:
操作HTML页面宿主窗口的属性时,临时页面窗口的打开和迅速关闭,会导致屏幕的局部闪烁,并且,通过调用javascript的window.open()来配置新窗口的属性时,能够配置的属性也较少。
再例如,通过监听鼠标事件拖动HTML页面宿主窗口时,由于网页上的鼠标事件容易丢失,因此会引起HTML页面宿主窗口的拖动不够流畅,拖动效果较差。
又例如,当使用API接口TrackPopupMenu弹出菜单内容时,由于用户对菜单选项的选择消息会反馈到处理这个菜单消息的窗口过程中,因此,如果想增加菜单项或者改变菜单项,必须修改源代码中的窗口过程,进而导致需要用户升级浏览器客户端,因此弹出菜单内容的灵活性较差。
因此,有必要提出一种技术方案,以解决通过javascript的API接口对HTML页面宿主窗口进行操作时,操作效果较差的技术问题。
发明内容
有鉴于此,本发明提供了一种操作HTML页面宿主窗口的方法和装置,以便改善对HTML页面宿主窗口的操作效果。
本发明的技术方案具体是这样实现的:
一种操作HTML页面宿主窗口的方法,该方法包括:
识别HTML页面内容中用于操作宿主窗口的HTML标签,读取用于操作宿主窗口的HTML标签的属性值,根据读取的用于操作宿主窗口的HTML标签的属性值,对宿主窗口执行相应的操作。
可见,本发明在HTML页面内容中增加了用于操作宿主窗口的HTML标签,根据识别出的用于操作宿主窗口的HTML标签的类型和属性值,对宿主窗口执行相应的操作,突破了现有技术中HTML结构仅仅关注于对网页内容本身的描述,HTML结构与宿主窗口之间不存在联系,对于宿主窗口的操作,完全由javascript的API接口来实现的思路,从而解决了由于采用javascript的API接口来操作HTML页面宿主窗口而带来的效果较差的问题,通过直接根据用于操作宿主窗口的HTML标签的类型和属性值,对宿主窗口执行相应的操作,能够改善对HTML页面宿主窗口进行操作的效果。
附图说明
图1是本发明提供的操作HTML页面宿主窗口的方法流程图。
图2是本发明提供的根据用于配置宿主窗口属性的标签配置窗口属性的流程图。
图3是本发明根据用于拖动宿主窗口的标签拖动宿主窗口的流程图。
图4是本发明根据用于弹出菜单内容的标签弹出菜单内容的流程图。
图5是本发明提供的根据菜单页面的HTML页面内容显示菜单内容的方法流程图。
图6是本发明提供的操作HTML页面宿主窗口的装置结构图。
具体实施方式
图1是本发明提供的操作HTML页面宿主窗口的方法流程图。
如图1所示,该方法包括:
步骤101,识别HTML页面内容中用于操作宿主窗口的HTML标签。
步骤102,读取用于操作宿主窗口的HTML标签的属性值。
步骤103,根据读取的用于操作宿主窗口的HTML标签的属性值,对宿主窗口执行相应的操作。
可见,本发明通过在HTML页面内容中增加用于操作宿主窗口的HTML标签,根据识别出的用于操作宿主窗口的HTML标签的类型和属性值,对宿主窗口执行相应的操作,突破了现有技术中HTML结构仅仅关注于对网页内容本身的描述,HTML结构与宿主窗口之间不存在联系,对于宿主窗口的操作,完全由javascript的API接口来实现的思路,通过直接根据用于操作宿主窗口的HTML标签的类型和属性值,对宿主窗口执行相应的操作,能够改善对HTML页面宿主窗口进行操作的效果。
根据对宿主窗口执行的操作的不同,可以在HTML页面内容中设置不同类型的用于操作宿主窗口的HTML标签,在HTML页面内容中可以仅设置一种用于操作宿主窗口的标签,也可以设置两种以上用于操作宿主窗口的标签,例如,在HTML页面内容中设置的用于操作宿主窗口的HTML标签,可以包括但不限于,用于配置宿主窗口属性的标签、用于拖动宿主窗口的标签、和/或用于弹出菜单内容的标签。
下面分别对根据用于配置宿主窗口属性的标签配置宿主窗口属性的流程、根据用于拖动宿主窗口的标签拖动宿主窗口的流程、以及根据用于弹出菜单内容的标签弹出菜单内容的流程进行介绍,具体请参见图2-图4。
图2是本发明提供的根据用于配置宿主窗口属性的标签配置窗口属性的流程图。
如图2所示,该流程包括:
步骤201,生成宿主窗口并隐藏该宿主窗口。
步骤202,读取HTML页面内容并生成DOM树。
步骤203,在所述DOM树生成完毕以后,根据DOM树的接口,识别用于配置宿主窗口属性的标签。
步骤204,获取该用于配置宿主窗口属性的标签的属性值,保存所述属性值。
步骤205,根据保存的所述属性值,对隐藏的所述宿主窗口的属性进行配置。
步骤206,显示配置后的宿主窗口。
本步骤中,可以在配置后的宿主窗口中渲染HTML页面内容,从而显示HTML页面。
可见,在图2所示方法中,先生成宿主窗口并隐藏,然后根据读取的用于配置宿主属性的标签的属性值,直接对该隐藏的宿主窗口进行属性配置,并显示配置后的宿主窗口,由于自始至终都是一个宿主窗口,并且宿主窗口在属性配置完毕之前都处于隐藏状态,因此不会出现屏幕局部闪烁的现象,与现有技术中需要先生成临时页面窗口,然后再利用临时页面窗口生成预定配置的窗口相比,效果更好。
另外,由于在用于配置宿主窗口属性的标签中,可以设置宿主窗口的各种属性,与现有技术中通过调用javascript的window.open()来配置新窗口的属性时,只能配置新窗口的部分属性相比,可配置的属性增多,宿主窗口属性配置变得更加灵活。
图3是本发明根据用于拖动宿主窗口的标签拖动宿主窗口的流程图。
如图3所示,该流程包括:
步骤301,在宿主窗口中捕获产生鼠标事件或触摸事件的信息。
本步骤中,对于Windows操作系统,典型地,可以捕获WM_NCHITTEST消息。
步骤302,确定产生该鼠标事件或触摸事件的坐标位置。
步骤303,识别该坐标位置下DOM节点的HTML标签是否为用于拖动宿主窗口的标签,如果是,执行步骤306,否则,执行步骤304。
步骤304,继续向上查找上一级父节点,确定该上一级父节点的HTML标签是否为用于拖动宿主窗口的标签,如果是,执行步骤306,否则,执行步骤305。
步骤305,判断该上一级父节点是否为根节点,如果是,结束本流程,否则,返回步骤304。
步骤306,判断该用于拖动宿主窗口的标签的属性值是否为允许拖动的属性值,如果是,执行步骤307,否则,执行步骤308。
步骤307,触发将发生该鼠标事件或触摸事件的位置作为由操作系统自身来处理的区域进行处理的操作。
本步骤中,对于Windows操作系统,典型地,可以触发针对所述WM_NCHITTEST消息返回HTCAPTION消息的操作。
步骤308,触发将发生该鼠标事件或触摸事件的位置作为由HTML页面内容设计者来处理的区域进行处理的操作。
本步骤中,对于Windows操作系统,典型地,可以触发针对所述WM_NCHITTEST消息返回HTCLIENT消息的操作。
其中,WM_NCHITTEST消息、HTCAPTION消息和HTCLIENT消息是Windows操作系统的系统消息。具体地,在Windows操作系统中,当有鼠标事件产生时,例如鼠标移动或点击时,或者对于带有触摸屏的设备,当有触摸事件产生时,例如,发生接触式的点击事件或者接近式的点击事件时,就会产生WM_NCHITTEST消息,而当针对某一位置的WM_NCHITTEST消息返回HTCAPTION消息时,则表示将该位置作为标题栏区域,即作为系统区域,标题栏区域的点击和拖拽操作,都是由操作系统来执行,当针对某一位置的WM_NCHITTEST消息返回HTCLIENT消息时,表示将该位置作为用户自己处理的区域,即由HTML页面内容的设计者进行处理。
可见,通过图3所示方法,通过在HTML页面内容中添加用于拖动宿主窗口的标签,当识别出产生鼠标事件或触摸事件的位置上的HTML标签是用于拖动宿主窗口的标签,且该标签的属性值是允许拖动时,触发将发生该鼠标事件或触摸事件的位置作为由操作系统自身来处理的区域进行处理的操作,例如返回HTCAPTION消息,能够实现通过触发将发生该鼠标事件或触摸事件的位置作为由操作系统自身来处理的区域进行处理的操作,例如通过返回操作系统的HTCAPTION消息,而使得操作系统能够处理宿主窗口的拖动操作,使得对宿主窗口的拖动变得更加流畅,与现有技术中需要由HTML页面内容的设计者利用javascript的API接口来对宿主窗口进行拖动相比,能够显著改善拖动效果。
图4是本发明根据用于弹出菜单内容的标签弹出菜单内容的流程图。
步骤401,接收菜单弹出命令。
步骤402,生成用于显示菜单内容的容器对象。
步骤401和步骤402的顺序可以根据需要调整,即可以先接收菜单弹出命令,再生成用于显示菜单内容的容器对象,也可以先生成用于显示菜单内容的容器对象,然后再接收菜单弹出命令,并根据菜单弹出命令执行后续步骤,即步骤403以后的步骤。
一般地,出于对性能的考虑,可以在接收到菜单弹出命令以后,再生成用于显示菜单内容的容器。
步骤403,确定产生该菜单弹出命令的坐标位置。
步骤404,识别该坐标位置下DOM节点的HTML标签是否为用于弹出菜单内容的标签,如果是,执行步骤407,否则,执行步骤405。
步骤405,继续向上查找上一级父节点,确定该上一级父节点的HTML标签是否为用于弹出菜单内容的标签,如果是,执行步骤407,否则,执行步骤406。
步骤406,判断该上一级父节点是否是根节点,如果是,结束本流程,否则,返回步骤405。
步骤407,将所述用于弹出菜单内容的标签的属性值,传给所述用于展示菜单内容的容器对象。
步骤408,所述容器对象判断所述用于弹出菜单内容的标签的属性值是否为不弹出菜单内容的属性值,如果是,执行步骤409,否则,执行步骤410。
其中,典型地,不弹出菜单内容的属性值可以为空值。
步骤409,不弹出菜单内容。
步骤410,当所述用于弹出菜单内容的标签的属性值是菜单页面HTML页面内容时,所述容器对象直接根据所述菜单页面的HTML页面内容显示菜单内容,当所述用于弹出菜单内容的标签的属性值是菜单页面URL地址时,所述容器对象先根据所述URL地址获取该菜单页面的HTML页面内容,并根据获取的HTML页面内容显示菜单内容。
其中,用于显示菜单内容的容器对象可以接收对菜单页面的操作命令,然后采用脚本文件处理所述操作命令。
可见,图4所示方案通过在HTML页面内容中增加用于弹出菜单内容的标签,并将该标签的属性值设置为菜单页面的HTML页面内容或URL地址,这样,当检测到弹出菜单的命令时,首先根据产生该命令的位置识别该位置上的节点(或该节点的父节点)的HTML标签是否为用于弹出菜单内容的标签,如果是,则读取用于弹出菜单内容的标签的属性值,根据该属性值显示以HTML页面形式存在的菜单内容,从而使得,当需要增加菜单项或者改变菜单项时,只要更新用于弹出菜单内容的标签的属性值,即将该属性值更新为新的菜单内容对应的HTML页面内容或URL地址即可,而不必修改源代码中的窗口过程,从而提高了弹出菜单内容的灵活性。
另外,在根据菜单页面的HTML页面内容显示菜单内容的方案中,也可以嵌入图2所示的方案,即在菜单页面的HTML页面内容中增加用于配置菜单页面窗口属性的HTML标签,通过执行图2的方案来配置菜单页面窗口的属性,即配置用于显示菜单内容的窗口的属性。其中,步骤401生成的用于显示菜单内容的容器对象,相当于图2方案中由步骤201生成并隐藏的宿主窗口。
图5是本发明提供的根据菜单页面的HTML页面内容显示菜单内容的方法流程图。
如图5所示,该方法包括:
步骤501,生成用于显示菜单内容的宿主窗口。
步骤502,隐藏该用于显示菜单内容的宿主窗口。
步骤503,识别菜单页面的HTML页面内容中用于配置该用于显示菜单内容的宿主窗口属性的标签。
步骤504,读取所述用于配置该用于显示菜单内容的宿主窗口属性的标签的属性值。
步骤505,根据该属性值配置该用于显示菜单内容的宿主窗口的属性。
步骤506,在用于显示菜单内容的宿主窗口的属性配置完毕后,显示配置后的用于显示菜单内容的宿主窗口。
步骤507,在配置后的该用于显示菜单内容的宿主窗口中,渲染菜单页面的HTML页面内容,并显示渲染后的菜单页面。
在显示渲染后的菜单页面之后,用于显示菜单内容的宿主窗口可以接收对菜单页面的操作命令,然后采用脚本文件处理所述操作命令。
下面,分别举具体的例子对图2、图3和图4所示的方法进行示例性介绍。
在一实施例中,首先,在标准HTML文件中加入一个新的标签,可以称为config标签。config标签内可以写入各种窗口属性。例如,可以在config标签里输入宿主窗口的初始长度,高度和最小尺寸的长度和高度:
<config id=″window-config″window-width=″300″window-height=″600″minimum-width=″300″minimum-height=″400″>
定义好HTML文件中用于配置窗口属性的标签和其属性值后,在拥有宿主窗口句柄的类中对应地定义成员变量存放窗口属性的值,因为窗口属性的值可能会在窗口过程中重复使用。浏览器内核在读取HTML文件完毕,生成dom树后,会产生一个LoadEnd消息。在收到LoadEnd消息后,可以用dom树的接口,访问config标签中的内容。把config中窗口属性的值保存到对应的成员变量中以后,就可以根据这些窗口属性值改变窗口的大小。其中,应先生成宿主窗口,再读取HTML页面内容,并且,在读取HTML完毕并且配置完窗口属性之前,应将宿主窗口隐藏起来。即,在创建宿主窗口的时候将其隐藏,在配置完窗口属性后把窗口显示出来。通过这种“隐藏窗口—读取HTML中定义的窗口属性—根据获得的属性值改变窗口状态—显示窗口”的HTML端和宿主窗口端配合的模式,就可以配置各种窗口属性了。
在另一实施例中,通过在渲染HTML的窗口的窗口过程中处理WM_NCHITTEST消息,可以达到利用操作系统来拖动宿主窗口的效果。具体地,在需要拖动的元素的HTML标签上添加一个属性″nchittest″,其值为″caption″时,该元素的消息和事件完全由系统处理,拥有和窗口标题栏一样的表现。其值为″client″时,该元素遵循原本HTML的性质。具体处理流程:在宿主窗口过程中捕获WM_NCHITTEST消息,根据产生该消息的坐标位置,获得该坐标下的HTML标签的nchittest属性的值,如果值为″caption″,该消息返回HTCAPTION消息,如果为″client″,则返回HTCLIENT消息。若标签没有设置nchittest属性,则往上查找其父结点的nchittest属性,直到找到nchittest属性或查找完根节点为止。这样,由于HTCAPTION消息是系统消息,因此拖动窗口的操作完全由操作系统处理,拖动效果好。
在再一实施例中,保持一个专门展现菜单内容的容器对象。而这个容器对象,实际上可以是另一宿主窗口,即是用于显示菜单内容的宿主窗口。菜单界面为HTML页面,容器对象负责在需要弹出菜单内容时,取得HTML并页面内容渲染HTML页面内容。因此,当需要弹出菜单时,只需要给这个容器对象提供菜单页面的HTML或者其页面的URL,即可展现需要弹出的菜单内容。之后菜单上的操作和消息都可以由该容器对象展现的菜单页面内容上的javascript等脚本进行处理。这样,在修改或增加菜单选项、菜单属性时,只需要修改对应的HTML或URL即可,客户端代码不需要任何修改。
在该再一实施例中,关于在HTML页面内容中增加用于弹出菜单内容的标签,介绍如下:
增加的用于弹出菜单内容的标签可以包括menu标签和child-menu标签,用于声明该menu标签或child-menu标签弹出的菜单页面对应的HTML页面内容或URL。其中,当menu标签或child-menu标签存在并为空值时,表示该标签不弹出菜单。当没有menu标签或child-menu标签时,会寻找上一级父节点是否存在child-menu标签,以确定其应弹出的菜单页面对应的HTML页面内容或URL。假如查询到的child-menu值为空,则不弹出菜单,并停止上向查询child-menu标签。这样,就可以通过为menu标签或child-menu标签配上菜单页面的HTML页面内容或URL,实现弹出特定的菜单内容。
在该再一实施例中,关于弹出菜单的流程,介绍如下:
以右键弹出菜单为例,假设用户在页面上某个标签上点击右键,这时,查询当前点击位置所在标签是否是menu标签。如果是menu标签,把menu标签的属性值传给用于显示菜单内容的容器对象;如果不是menu标签,则向其父节点查询是否存在child-menu标签,如果存在child-menu标签,则把该child-menu标签的属性值传给用于显示菜单内容的容器对象,否则继续查询此父节点的父节点,直到寻找到child-menu标签或已查找完根结点为止。其中,用于显示菜单内容的容器对象在得到了menu标签的属性值或child-menu标签的属性值以后,判断此属性值是否为空,如果为空,则不用处理,即不弹出菜单,如果不为空,则根据该属性值显示菜单内容。其中,如果该属性值是URL,则根据该URL从网络上拉取HTML页面内容,如果该属性值是HTML页面内容,则可以直接通过读取属性值来获取HTML页面内容,取得HTML页面内容并渲染完毕后,即可将菜单显示出来,然后等待接收用户对菜单的操作。
下面,举一个示例的HTML页面内容进行说明,在该示例中,button1具有menu标签,其属性值为menu1.HTML,button2和button3不带有menu标签,但是他们拥有同一个父结点,该父结点拥有child-menu标签,该child-menu标签的属性值为menu2.HTML,因此,实际显示的界面中,当点击button1时,弹出的菜单为menu1菜单,当点击button2和button3时,弹出的菜单为menu2菜单。
根据本发明提供的上述方法,本发明还提供了相应的装置,具体请参见图6。
图6是本发明提供的操作HTML页面宿主窗口的装置结构图。
如图6所示,该装置包括识别模块601、读取模块602和操作模块603。其中,识别模块601与读取模块602相连,读取模块602与操作模块603相连,具体地:
识别模块601,用于识别HTML页面内容中用于操作宿主窗口的HTML标签。
读取模块602,用于读取所述用于操作宿主窗口的HTML标签的属性值。
操作模块603,用于根据所述读取模块读取的所述属性值,对宿主窗口执行相应的操作。
其中,用于操作宿主窗口的HTML标签可以包括用于配置宿主窗口属性的标签。
识别模块601具体可以包括一模块,用于读取HTML页面内容并生成DOM树,在所述DOM树生成完毕以后,根据DOM树的接口,识别用于配置宿主窗口属性的标签。
读取模块602具体可以包括一模块,用于获取该用于配置宿主窗口属性的标签的属性值,保存所述属性值。
操作模块603具体可以包括一模块,用于生成宿主窗口并隐藏该宿主窗口,根据读取模块602保存的所述属性值,对隐藏的所述宿主窗口的属性进行配置,显示配置后的宿主窗口。
用于操作宿主窗口的HTML标签可以包括用于拖动宿主窗口的标签。
识别模块601具体可以包括一模块,用于在宿主窗口中捕获产生鼠标事件或触摸事件的信息,确定产生该鼠标事件或触摸事件的坐标位置,识别该坐标位置下DOM节点的HTML标签是否为用于拖动宿主窗口的标签,如果是,启动读取模块602读取所述用于拖动宿主窗口的标签,如果否,继续向上查找上一级父节点,确定上一级父节点的HTML标签是否为用于拖动宿主窗口的标签,如果是,启动读取模块602读取所述用于拖动宿主窗口的标签,否则,继续向上查找上一级父节点,直至查找到用于拖动宿主窗口的标签、或者查找完根节点为止。
读取模块602具体可以包括一模块,用于读取用于拖动宿主窗口的标签的属性值。
操作模块603具体可以包括一模块,用于判断读取模块602读取的用于拖动宿主窗口的标签的属性值是否为允许拖动的属性值,如果是允许拖动的属性值,则触发将发生该鼠标事件或触摸事件的位置作为由操作系统自身来处理的区域进行处理的操作,如果是不允许拖动的属性值,则触发将发生该鼠标事件或触摸事件的位置作为由HTML页面内容设计者来处理的区域进行处理的操作。
其中,所述产生鼠标事件或触摸事件的信息可以包括WM_NCHITTEST消息。所述将发生该鼠标事件或触摸事件的位置作为由操作系统自身来处理的区域进行处理包括:针对所述WM_NCHITTEST消息返回HTCAPTION消息。所述将发生该鼠标事件或触摸事件的位置作为由HTML页面内容设计者来处理的区域进行处理包括:针对所述WM_NCHITTEST消息返回HTCLIENT消息。其中,WM_NCHITTEST消息、HTCAPTION消息和HTCLIENT消息是Windows操作系统的系统消息。
用于操作宿主窗口的HTML标签可以包括用于弹出菜单内容的标签。
识别模块601具体可以包括一模块,用于接收菜单弹出命令,确定产生该菜单弹出命令的坐标位置,识别该坐标位置下DOM节点的HTML标签是否为用于弹出菜单内容的标签,如果是,启动读取模块602读取所述用于弹出菜单内容的标签的属性值,如果否,继续向上查找上一级父节点,确定上一级父节点的HTML标签是否为用于弹出菜单内容的标签,如果是,启动读取模块602读取所述用于弹出菜单内容的标签的属性值,否则,继续向上查找上一级父节点,直至查找到用于弹出菜单内容的标签、或者查找完根节点为止。
读取模块602具体可以包括一模块,用于读取所述弹出菜单内容的标签的属性值,将所述属性值传给用于展示菜单内容的容器对象。
操作模块603具体可以包括一模块,用于生成用于显示菜单内容的容器对象。
其中,所述容器对象判断所述用于弹出菜单内容的标签的属性值是否为空,如果是,则不弹出菜单内容,否则,根据作为所述用于弹出菜单内容的标签的属性值的菜单页面HTML页面内容显示菜单内容,或者根据作为所述用于弹出菜单内容的标签的属性值的菜单页面URL地址获取该菜单页面的HTML页面内容,并根据获取的HTML页面内容显示菜单内容。
其中,用于显示菜单内容的容器对象可以包括用于显示菜单内容的宿主窗口。
操作模块603具体可以包括一模块,用于生成用于显示菜单内容的宿主窗口,隐藏该用于显示菜单内容的宿主窗口,识别菜单页面的HTML页面内容中用于配置该用于显示菜单内容的宿主窗口属性的标签,读取所述用于配置该用于显示菜单内容的宿主窗口属性的标签的属性值,根据该属性值配置该用于显示菜单内容的宿主窗口的属性,并在用于显示菜单内容的宿主窗口的属性配置完毕后,显示配置后的用于显示菜单内容的宿主窗口,在配置后的该用于显示菜单内容的宿主窗口中,渲染菜单页面的HTML页面内容,并显示渲染后的菜单页面。
所述用于显示菜单内容的宿主窗口,可以接收对菜单页面的操作命令,采用脚本文件处理所述操作命令。
本发明还提供了一种机器可读的存储介质,存储用于使一机器执行如本文所述的操作HTML页面宿主窗口的方法的指令。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (14)
1.一种操作HTML页面宿主窗口的方法,其特征在于,该方法包括:
识别HTML页面内容中用于操作宿主窗口的HTML标签,读取用于操作宿主窗口的HTML标签的属性值,根据读取的用于操作宿主窗口的HTML标签的属性值,对宿主窗口执行相应的操作。
2.根据权利要求1所述的方法,其特征在于,用于操作宿主窗口的HTML标签包括用于配置宿主窗口属性的标签;
在识别HTML页面内容中用于操作宿主窗口的HTML标签之前,该方法还包括:生成宿主窗口并隐藏该宿主窗口,读取HTML页面内容并生成DOM树;
所述识别HTML页面内容中用于操作宿主窗口的HTML标签,读取用于操作宿主窗口的HTML标签的属性值包括:
在所述DOM树生成完毕以后,根据DOM树的接口,识别用于配置宿主窗口属性的标签,获取该用于配置宿主窗口属性的标签的属性值,保存所述属性值;
对宿主窗口执行相应的操作包括:
根据保存的所述属性值,对隐藏的所述宿主窗口的属性进行配置,显示配置后的宿主窗口。
3.根据权利要求1所述的方法,其特征在于,用于操作宿主窗口的HTML标签包括用于拖动宿主窗口的标签;
识别HTML页面内容中用于操作宿主窗口的HTML标签包括:
在宿主窗口中捕获产生鼠标事件或触摸事件的信息,确定产生该鼠标事件或触摸事件的坐标位置,识别该坐标位置下DOM节点的HTML标签是否为用于拖动宿主窗口的标签;
对宿主窗口执行相应的操作包括:
当识别出所述坐标位置下DOM节点的HTML标签是用于拖动宿主窗口的标签时,执行根据用于拖动宿主窗口的标签的属性值操作宿主窗口的步骤;
当识别出所述坐标位置下的HTML标签不是用于拖动宿主窗口的标签时,继续向上查找上一级父节点,确定上一级父节点的HTML标签是否为用于拖动宿主窗口的标签,如果是,执行根据用于拖动宿主窗口的标签的属性值操作宿主窗口的步骤,否则,返回继续向上查找上一级父节点的步骤,直至查找到用于拖动宿主窗口的标签、或者查找完根节点为止;
其中,根据用于拖动宿主窗口的标签的属性值操作宿主窗口的步骤包括:
判断该用于拖动宿主窗口的标签的属性值是否为允许拖动的属性值,如果是允许拖动的属性值,则触发将发生该鼠标事件或触摸事件的位置作为由操作系统自身来处理的区域进行处理的操作,如果是不允许拖动的属性值,则触发将发生该鼠标事件或触摸事件的位置作为由HTML页面内容设计者来处理的区域进行处理的操作。
4.根据权利要求3所述的方法,其特征在于,所述产生鼠标事件或触摸事件的信息包括WM_NCHITTEST消息,
所述将发生该鼠标事件或触摸事件的位置作为由操作系统自身来处理的区域进行处理包括:针对所述WM_NCHITTEST消息返回HTCAPTION消息;
所述将发生该鼠标事件或触摸事件的位置作为由HTML页面内容设计者来处理的区域进行处理包括:针对所述WM_NCHITTEST消息返回HTCLIENT消息;
其中,WM_NCHITTEST消息、HTCAPTION消息和HTCLIENT消息是Windows操作系统的系统消息。
5.根据权利要求1所述的方法,其特征在于,用于操作宿主窗口的HTML标签包括用于弹出菜单内容的标签;
该方法还包括:生成用于显示菜单内容的容器对象;
识别HTML页面内容中用于操作宿主窗口的HTML标签包括:
接收菜单弹出命令,确定产生该菜单弹出命令的坐标位置,识别该坐标位置下DOM节点的HTML标签是否为用于弹出菜单内容的标签,
对宿主窗口执行相应的操作包括:
当识别出所述坐标位置下DOM节点的HTML标签是用于弹出菜单内容的标签时,执行根据用于弹出菜单内容的标签的属性值操作宿主窗口的步骤;
当识别出所述坐标位置下的HTML标签不是用于弹出菜单内容的标签时,继续向上查找上一级父节点,确定上一级父节点的HTML标签是否为用于弹出菜单内容的标签,如果是,执行根据用于弹出菜单内容的标签的属性值操作宿主窗口的步骤,否则,返回继续向上查找上一级父节点的步骤,直至查找到用于弹出菜单内容的标签、或者查找完根节点为止;
其中,根据用于弹出菜单内容的标签的属性值操作宿主窗口的步骤包括:
将所述用于弹出菜单内容的标签的属性值,传给所述用于展示菜单内容的容器对象,所述容器对象判断所述用于弹出菜单内容的标签的属性值是否为不弹出菜单内容的属性值,如果是,则不弹出菜单内容,否则,根据作为所述用于弹出菜单内容的标签的属性值的菜单页面HTML页面内容显示菜单内容,或者根据作为所述用于弹出菜单内容的标签的属性值的菜单页面URL地址获取该菜单页面的HTML页面内容,并根据获取的HTML页面内容显示菜单内容。
6.根据权利要求5所述的方法,其特征在于,
生成用于显示菜单内容的容器对象包括:
生成用于显示菜单内容的宿主窗口,隐藏该用于显示菜单内容的宿主窗口;
所述显示菜单内容包括:
识别菜单页面的HTML页面内容中用于配置该用于显示菜单内容的宿主窗口属性的标签,读取所述用于配置该用于显示菜单内容的宿主窗口属性的标签的属性值,根据该属性值配置该用于显示菜单内容的宿主窗口的属性,在用于显示菜单内容的宿主窗口的属性配置完毕后,显示配置后的用于显示菜单内容的宿主窗口,在配置后的该用于显示菜单内容的宿主窗口中,渲染菜单页面的HTML页面内容,并显示渲染后的菜单页面。
7.根据权利要求6所述的方法,其特征在于,显示渲染后的菜单页面之后,该方法还包括:
接收对菜单页面的操作命令,采用脚本文件处理所述操作命令。
8.一种操作HTML页面宿主窗口的装置,其特征在于,该装置包括识别模块、读取模块和操作模块;
所述识别模块,用于识别HTML页面内容中用于操作宿主窗口的HTML标签;
所述读取模块,用于读取所述用于操作宿主窗口的HTML标签的属性值;
所述操作模块,用于根据所述读取模块读取的所述属性值,对宿主窗口执行相应的操作。
9.根据权利要求8所述的装置,其特征在于,用于操作宿主窗口的HTML标签包括用于配置宿主窗口属性的标签;
所述识别模块,用于读取HTML页面内容并生成DOM树,在所述DOM树生成完毕以后,根据DOM树的接口,识别用于配置宿主窗口属性的标签;
所述读取模块,用于获取该用于配置宿主窗口属性的标签的属性值,保存所述属性值;
所述操作模块,用于生成宿主窗口并隐藏该宿主窗口,根据所述读取模块保存的所述属性值,对隐藏的所述宿主窗口的属性进行配置,显示配置后的宿主窗口。
10.根据权利要求8所述的装置,其特征在于,用于操作宿主窗口的HTML标签包括用于拖动宿主窗口的标签;
所述识别模块,用于在宿主窗口中捕获产生鼠标事件或触摸事件的信息,确定产生该鼠标事件或触摸事件的坐标位置,识别该坐标位置下DOM节点的HTML标签是否为用于拖动宿主窗口的标签,如果是,启动所述读取模块读取所述用于拖动宿主窗口的标签,如果否,继续向上查找上一级父节点,确定上一级父节点的HTML标签是否为用于拖动宿主窗口的标签,如果是,启动所述读取模块读取所述用于拖动宿主窗口的标签,否则,继续向上查找上一级父节点,直至查找到用于拖动宿主窗口的标签、或者查找完根节点为止;
所述读取模块,用于读取用于拖动宿主窗口的标签的属性值;
所述操作模块,用于判断所述读取模块读取的用于拖动宿主窗口的标签的属性值是否为允许拖动的属性值,如果是允许拖动的属性值,则触发将发生该鼠标事件或触摸事件的位置作为由操作系统自身来处理的区域进行处理的操作,如果是不允许拖动的属性值,则触发将发生该鼠标事件或触摸事件的位置作为由HTML页面内容设计者来处理的区域进行处理的操作。
11.根据权利要求10所述的装置,其特征在于,所述产生鼠标事件或触摸事件的信息包括WM_NCHITTEST消息,
所述将发生该鼠标事件或触摸事件的位置作为由操作系统自身来处理的区域进行处理包括:针对所述WM_NCHITTEST消息返回HTCAPTION消息;
所述将发生该鼠标事件或触摸事件的位置作为由HTML页面内容设计者来处理的区域进行处理包括:针对所述WM_NCHITTEST消息返回HTCLIENT消息;
其中,WM_NCHITTEST消息、HTCAPTION消息和HTCLIENT消息是Windows操作系统的系统消息。
12.根据权利要求8所述的装置,其特征在于,用于操作宿主窗口的HTML标签包括用于弹出菜单内容的标签;
所述识别模块,用于接收菜单弹出命令,确定产生该菜单弹出命令的坐标位置,识别该坐标位置下DOM节点的HTML标签是否为用于弹出菜单内容的标签,如果是,启动所述读取模块读取所述用于弹出菜单内容的标签的属性值,如果否,继续向上查找上一级父节点,确定上一级父节点的HTML标签是否为用于弹出菜单内容的标签,如果是,启动所述读取模块读取所述用于弹出菜单内容的标签的属性值,否则,继续向上查找上一级父节点,直至查找到用于弹出菜单内容的标签、或者查找完根节点为止;
所述读取模块,用于读取所述弹出菜单内容的标签的属性值,将所述属性值传给用于展示菜单内容的容器对象;
所述操作模块,用于生成用于显示菜单内容的容器对象;
所述容器对象判断所述用于弹出菜单内容的标签的属性值是否为不弹出菜单内容的属性值,如果是,则不弹出菜单内容,否则,根据作为所述用于弹出菜单内容的标签的属性值的菜单页面HTML页面内容显示菜单内容,或者根据作为所述用于弹出菜单内容的标签的属性值的菜单页面URL地址获取该菜单页面的HTML页面内容,并根据获取的HTML页面内容显示菜单内容。
13.根据权利要求12所述的装置,其特征在于,用于显示菜单内容的容器对象包括用于显示菜单内容的宿主窗口;
所述操作模块,用于生成用于显示菜单内容的宿主窗口,隐藏该用于显示菜单内容的宿主窗口,识别菜单页面的HTML页面内容中用于配置该用于显示菜单内容的宿主窗口属性的标签,读取所述用于配置该用于显示菜单内容的宿主窗口属性的标签的属性值,根据该属性值配置该用于显示菜单内容的宿主窗口的属性,并在用于显示菜单内容的宿主窗口的属性配置完毕后,显示配置后的用于显示菜单内容的宿主窗口,在配置后的该用于显示菜单内容的宿主窗口中,渲染菜单页面的HTML页面内容,并显示渲染后的菜单页面。
14.根据权利要求13所述的装置,其特征在于,
所述用于显示菜单内容的宿主窗口,用于接收对菜单页面的操作命令,采用脚本文件处理所述操作命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210163490.8A CN103425388B (zh) | 2012-05-24 | 2012-05-24 | 一种操作html页面宿主窗口的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210163490.8A CN103425388B (zh) | 2012-05-24 | 2012-05-24 | 一种操作html页面宿主窗口的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103425388A true CN103425388A (zh) | 2013-12-04 |
CN103425388B CN103425388B (zh) | 2017-03-15 |
Family
ID=49650215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210163490.8A Active CN103425388B (zh) | 2012-05-24 | 2012-05-24 | 一种操作html页面宿主窗口的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103425388B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015196954A1 (zh) * | 2014-06-24 | 2015-12-30 | 北京奇虎科技有限公司 | 网页元素的显示方法以及浏览器装置 |
CN106610833A (zh) * | 2015-10-27 | 2017-05-03 | 北京国双科技有限公司 | 一种触发重叠html元素鼠标事件的方法及装置 |
CN110879677A (zh) * | 2018-09-06 | 2020-03-13 | 武汉斗鱼网络科技有限公司 | 一种窗口界面消息的管理方法以及相关设备 |
CN113590995A (zh) * | 2019-01-14 | 2021-11-02 | 广州虎牙信息科技有限公司 | 一种页面显示方法、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236558A (zh) * | 2008-02-29 | 2008-08-06 | 腾讯科技(深圳)有限公司 | 一种基于web页的模拟IM客户端界面的方法和装置 |
US20100070851A1 (en) * | 2008-09-17 | 2010-03-18 | International Business Machines Corporation | Method and system for providing suggested tags associated with a target web page for manipulation by a user |
CN102096588A (zh) * | 2011-03-24 | 2011-06-15 | 南京朗睿软件科技有限公司 | 一种包含控件的页面的建立方法 |
-
2012
- 2012-05-24 CN CN201210163490.8A patent/CN103425388B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236558A (zh) * | 2008-02-29 | 2008-08-06 | 腾讯科技(深圳)有限公司 | 一种基于web页的模拟IM客户端界面的方法和装置 |
US20100070851A1 (en) * | 2008-09-17 | 2010-03-18 | International Business Machines Corporation | Method and system for providing suggested tags associated with a target web page for manipulation by a user |
CN102096588A (zh) * | 2011-03-24 | 2011-06-15 | 南京朗睿软件科技有限公司 | 一种包含控件的页面的建立方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015196954A1 (zh) * | 2014-06-24 | 2015-12-30 | 北京奇虎科技有限公司 | 网页元素的显示方法以及浏览器装置 |
CN106610833A (zh) * | 2015-10-27 | 2017-05-03 | 北京国双科技有限公司 | 一种触发重叠html元素鼠标事件的方法及装置 |
CN110879677A (zh) * | 2018-09-06 | 2020-03-13 | 武汉斗鱼网络科技有限公司 | 一种窗口界面消息的管理方法以及相关设备 |
CN113590995A (zh) * | 2019-01-14 | 2021-11-02 | 广州虎牙信息科技有限公司 | 一种页面显示方法、设备和存储介质 |
CN113590995B (zh) * | 2019-01-14 | 2023-08-01 | 广州虎牙信息科技有限公司 | 一种页面显示方法、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103425388B (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10007933B2 (en) | Systems and methods for integrating dynamic content into electronic media | |
US9152529B2 (en) | Systems and methods for dynamically altering a user interface based on user interface actions | |
US9524344B2 (en) | User interface for online ads | |
WO2018133452A1 (zh) | 一种网页渲染方法及相关设备 | |
US10503821B2 (en) | Dynamic workflow assistant with shared application context | |
US9092131B2 (en) | Highlighting of tappable web page elements | |
EP2987088A2 (en) | Client side page processing | |
CN105373522A (zh) | 基于手势的图表上的数据筛选 | |
CN106097072B (zh) | 一种商品信息的对比方法、装置与终端设备 | |
WO2013085528A1 (en) | Methods and apparatus for dynamically adapting a virtual keyboard | |
KR20130127349A (ko) | 문자화장단말기 및 제어방법 | |
US20170235706A1 (en) | Effecting multi-step operations in an application in response to direct manipulation of a selected object | |
US9830304B1 (en) | Systems and methods for integrating dynamic content into electronic media | |
EP2864870A1 (en) | Folded views in development environment | |
CN107015979B (zh) | 一种数据处理方法、装置和智能终端 | |
WO2014154033A1 (en) | Method and apparatus for extracting web page content | |
CN109740041B (zh) | 网页爬取方法、装置、存储介质和计算机设备 | |
CN105335383A (zh) | 输入信息的处理方法及装置 | |
CN105183291A (zh) | 显示界面中的信息提取方法及系统 | |
CN103425388A (zh) | 一种操作html页面宿主窗口的方法和装置 | |
CN103870191A (zh) | 网页保存的方法及电子设备 | |
CN104102704A (zh) | 系统控件展示方法和装置 | |
CN107436869B (zh) | 一种印象评论生成方法及装置 | |
US20090125837A1 (en) | Tab control with type ahead and thumbnail images | |
CN110020279B (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 |