事件监听器,则通过所述内核线程继续检测所述DOM节点所对应的事件类型是否为触摸事件。
[0097]所述监听注册单元320d,用于若检测结果为需要注册所述JavaScript事件监听器,则通过所述内核线程调用预定注册接口为所述DOM节点注册所述JavaScript事件监听器。
[0098]优选的,所述监听注册单元320d,还用于若检测结果为所述DOM节点所对应的事件类型为所述触摸事件,则执行所述通过所述内核线程调用预定注册接口为所述DOM节点注册所述JavaScript事件监听器的步骤。
[0099]所述节点添加单元320e,用于通过所述内核线程将完成注册的所述DOM节点的节点指针元素添加至所述预定节点指针容器对象中。
[0100]所述删除检测单元320f,用于在所述内核线程解析网页文档构建DOM树的过程中,对于所述DOM树中的每一个DOM节点,通过所述内核线程检测所述DOM节点是否满足预定条件,所述预定条件是指所述DOM节点需要从所述JavaScript事件监听器中释放或者注销。
[0101]所述节点删除单元320g,用于若检测结果为所述DOM节点满足所述预定条件,则通过所述内核线程将所述DOM节点的节点指针元素从所述预定节点指针容器对象中删除。
[0102]所述数组构建单元320h,用于通过所述内核线程构建所述预定区域数组对象。
[0103]所述指针获取单元320i,用于通过所述内核线程获取所述网页页面所对应的文档对象中的预定节点指针容器对象所包含的节点指针元素。
[0104]所述区域获取单元320j,用于通过所述内核线程获取所述节点指针元素所指向的DOM节点所对应的显示区域。
[0105]所述区域添加单元320k,用于通过所述内核线程将所述DOM节点所对应的显示区域添加至所述预定区域数组对象中。
[0106]所述数组发送单元3201,用于通过所述内核线程将所述预定区域数组对象发送给所述Π线程。
[0107]所述数组存储单元320m,用于通过所述UI线程接收并存储预定区域数组对象,所述预定区域数组对象中包含有所述注册了 JavaScript事件监听器的DOM节点所对应的显示区域;
[0108]所述区域确定单元320η,用于通过所述Π线程将所述预定区域数组对象中包含的所述注册了 JavaScript事件监听器的DOM节点所对应的显示区域的集合确定为所述预定区域。
[0109]所述坐标检测单元320ο,用于通过所述UI线程检测所述页面坐标点是否属于预定区域,所述预定区域是指所述网页页面中注册了 JavaScript事件监听器的DOM节点所对应的显示区域的集合。
[0110]事件响应模块330,用于若检测结果为不需要将所述事件对象传递给所述内核线程,则通过所述UI线程对所述事件对象进行响应。
[0111]具体地,所述事件响应模块330,还用于若检测结果为所述页面坐标点不属于所述预定区域,则执行所述通过所述UI线程对所述事件对象进行响应的步骤。
[0112]事件传递模块340,用于若检测结果为需要将所述事件对象传递给所述内核线程,则通过所述UI线程将所述事件对象传递给所述内核线程。
[0113]内核判断模块350,用于通过所述内核线程判断是否需要对所述事件对象进行响应。
[0114]内核响应模块360,用于若判断结果为需要对所述事件对象进行响应,则通过所述内核线程对所述事件对象进行响应。
[0115]事件返回模块370,用于若判断结果为不需要对所述事件对象进行响应,则通过所述内核线程将所述事件对象返回给所述UI线程;并通过所述UI线程在接收到所述内核线程返回的所述事件对象之后,对所述事件对象进行响应。
[0116]综上所述,本实施例提供的事件响应装置,UI线程在获取用户操作所对应的事件对象之后,从事件对象中提取屏幕坐标点,并将该屏幕坐标点转换为页面坐标点,然后检测页面坐标点是否属于预定区域,当检测结果为页面坐标点不属于预定区域时,则UI线程对获取到的事件对象进行响应;其中,预定区域是指网页页面中注册了 JavaScript事件监听器的DOM节点所对应的显示区域的集合;解决了现有的浏览器中的事件响应机制存在耗时严重以及响应缓慢的问题;实现了由Π线程检测用户操作所对应的DOM节点是否有注册JavaScript事件监听器,当检测发现并没有注册JavaScript事件监听器时,UI线程直接对用户操作所产生的事件对象进行响应,省去了现有技术中将每个事件对象都传递给内核线程进行判断的耗时,大大提高了浏览器对用户操作的响应效率。
[0117]另外,随着网页内容的调整或者改变,内核线程通过在解析网页文档构建DOM树的过程中,实时调整预定节点指针容器对象中所包含的节点指针元素,使得在后续获得的预定区域数组对象中包含的DOM节点所对应的显示区域更为实时、准确。
[0118]需要说明的是:上述实施例提供的事件响应装置在响应事件时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的事件响应装置与事件响应方法的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0119]应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”(“a”、“an”、“the”)旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
[0120]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0121]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0122]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种事件响应方法,其特征在于,用于在多线程环境下运行的浏览器中,所述方法包括: 通过UI线程获取用户操作所对应的事件对象; 通过所述UI线程检测是否需要将所述事件对象传递给内核线程; 若检测结果为不需要将所述事件对象传递给所述内核线程,则通过所述Π线程对所述事件对象进行响应。
2.根据权利要求1所述的方法,其特征在于,所述通过所述Π线程检测是否需要将所述事件对象传递给内核线程,包括: 通过所述Π线程根据所述事件对象确定所述用户操作对应于网页页面中的页面坐标占.通过所述Π线程检测所述页面坐标点是否属于预定区域,所述预定区域是指所述网页页面中注册了 JavaScript事件监听器的DOM节点所对应的显示区域的集合; 所述若检测结果为不需要将所述事件对象传递给所述内核线程,则通过所述Π线程对所述事件对象进行响应,包括: 若检测结果为所述页面坐标点不属于所述预定区域,则执行所述通过所述UI线程对所述事件对象进行响应的步骤。
3.根据权利要求2所述的方法,其特征在于,所述通过所述UI线程根据所述事件对象确定所述用户操作对应于网页页面中的页面坐标点,包括: 通过所述Π线程从所述事件对象中提取所述用户操作对应于电子设备屏幕上的屏幕坐标点; 通过所述Π线程将所述屏幕坐标点转换为所述网页页面中的页面坐标点。
4.根据权利要求2所述的方法,其特征在于,所述通过所述UI线程检测所述页面坐标点是否属于预定区域之前,还包括: 通过所述Π线程接收并存储预定区域数组对象,所述预定区域数组对象中包含有所述注册了 JavaScript事件监听器的DOM节点所对应的显示区域; 通过所述Π线程将所述预定区域数组对象中包含的所述注册了 JavaScript事件监听器的DOM节点所对应的显示区域的集合确定为所述预定区域。
5.根据权利要求4所述的方法,其特征在于,所述通过所述UI线程接收并存储预定区域数组对象之前,还包括: 通过所述内核线程构建所述预定区域数组对象; 通过所述内核线程获取所述网页页面所对应的文档对象中的预定节点指针容器对象所包含的节点指针元素; 通过所述内核线程获取所述节点指针元素所指向的DOM节点所对应的显示区域; 通过所述内核线程将所述DOM节点所对应的显示区域添加至所述预定区域数组对象中; 通过所述内核线程将所述预定区域数组对象发送给所述U