首页> 中国专利> 一种在网络应用中打开外链的方法和终端

一种在网络应用中打开外链的方法和终端

摘要

本发明公开了一种在网络应用中打开外链的方法和终端,属于网络应用技术领域。所述方法包括:接收网络应用的打开外链的请求;根据所述打开外链的请求创建对应的窗口;在所述网络应用中创建标签页面,在所述标签页面中加载所述窗口,并在所述窗口中打开所述外链对应的网页。本发明通过在网络应用中建立多窗口展示的浏览方式,并通过为每个新建立的标签页面创建单独的浏览器内核对象的多实例方式,实现了在网络应用中不用跳出开放平台的环境即可打开外链的窗口,提高了用户的体验,并减轻了网络应用开发者的负担提高了其应用的通用性。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-07-06

    授权

    授权

  • 2013-07-17

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20111223

    实质审查的生效

  • 2013-06-12

    公开

    公开

说明书

技术领域

本发明涉及网络应用技术领域,特别涉及一种在网络应用中打开外链的方法和终端。

背景技术

随着互联网开放平台的不断发展,越来越多的开放平台开始进行webapp(网络应用)的 开发,webapp是以Web页面为基础,完成某种功能的应用。开发一个webapp,开放平台需要 提供一个运行第三方web页面的窗口,在该窗口中嵌入第三方应用的web页面,这样用户就 可以像使用本地应用一样使用这些webapp。

Webapp的页面中经常会带有外链,外链即外部链接,是一个网页指向一个目标的连接关 系。现有技术中对外链的处理方式为:当用户点击webapp中的外链时跳出webapp窗口,通 过终端浏览器打开该链接指向的网页;进一步的情况,某些开放平台不希望webapp打开外链 时跳出webapp的范围,因此直接禁止接入的第三方应用带有外链,若webapp必须使用外链 时,需要webapp加入开放平台建立的白名单,才能打开webapp页面中出现的外链,该外链 的打开同样需要跳转至终端浏览器进行打开。采用白名单方式,webapp的开发者需要对 webapp进行额外的修改以适应开放平台的要求。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

当开放平台允许外链时,需要用户在开放平台和浏览器之间进行切换操作,会影响用户 的体验;当开放平台限制外链时,需要开发webapp的人员进行额外的修改,会影响网络应用 的通用性,降低开放平台的应用接入量。

发明内容

为了解决现有技术中只能通过浏览器打开网络应用中的外链的缺陷,本发明实施例提供 了一种在网络应用中打开外链的方法和终端。所述技术方案如下:

本发明实施例提出了一种在网络应用中打开外链的方法,包括:

接收网络应用的打开外链的请求;

根据所述打开外链的请求创建对应的窗口;

在所述网络应用中创建标签页面,在所述标签页面中加载所述窗口,并在所述窗口中打 开所述外链对应的网页。

作为上述技术方案的优选,所述根据所述打开外链的请求创建对应的窗口,具体包括:

根据所述打开外链的请求,创建浏览器内核对象;

根据所述浏览器内核对象,创建与所述浏览器内核对象关联的窗口,为所述窗口分配窗 口标识。

作为上述技术方案的优选,所述根据所述打开外链的请求,创建浏览器内核对象,具体 包括:

查询缓存池中是否已存在所述内核标识对应的浏览器内核对象;

若所述缓存池中已存在所述内核标识对应的浏览器内核对象,则调用所述内核标识对应 的浏览器内核对象作为所述打开外链的请求的浏览器内核对象;

若所述缓存池中未存在所述内核标识对应的浏览器内核对象,则根据所述内核标识选择 与所述网络应用对应的浏览器内核接口,调用所述选择的浏览器内核接口为所述打开外链的 请求创建浏览器内核对象。

作为上述技术方案的优选,所述在所述网络应用中创建新的标签页面,在所述标签页面 中加载所述窗口,并在所述窗口中打开所述外链对应的网页,具体包括:

获取所述窗口的句柄,并将所述窗口标识和所述窗口的句柄返回给所述网络应用,使得 所述网络应用创建一个新的标签页面,根据所述窗口标识和所述窗口的句柄在所述标签页面 中加载所述窗口,并在所述窗口中打开所述外链对应的网页。

作为上述技术方案的优选,所述通过所述网络应用页面对应的浏览器内核发出打开外链 的请求之后,所述方法还包括:

获取所述外链的权限标识,根据所述权限标识判断所述外链对应的网页能否调用本地服 务;

其中,所述权限标识用于标识所述外链对应的网页调用本地服务的权限。

作为上述技术方案的优选,所述方法还包括:

判断所述网络应用中的窗口数量是否小于预设阈值;

若所述网络应用中的窗口数量小于预设阈值,控制每一个窗口分别使用一个进程;

若所述网络应用的窗口数量大于等于预设阈值,控制两个或两个以上的窗口共用一个进 程。

作为上述技术方案的优选,所述方法还包括:

记录所述网络应用中打开的外链信息;

当所述网络应用发生故障时,调取所述记录的外链信息并将所述网络应用恢复至故障前 的状态。

本发明实施例还提出了一种在网络应用中打开外链的终端,包括:

接收模块,用于接收网络应用的打开外链的请求;

窗口创建模块,用于根据所述接收模块接收到的打开外链的请求创建对应的窗口;

网页加载模块,用于在所述网络应用中创建标签页面,在所述标签页面中加载所述窗口 创建模块创建的窗口,并在所述窗口中打开所述外链对应的网页。

作为上述技术方案的优选,所述窗口创建模块,包括:

内核创建单元,用于根据所述打开外链的请求,创建浏览器内核对象;

窗口创建单元,用于根据所述浏览器内核对象,创建与所述浏览器内核对象关联的窗口, 为所述窗口分配窗口标识。

作为上述技术方案的优选,所述内核创建单元,具体包括:

获取子单元,用于获取所述网络应用预设的内核标识;

查询子单元,用于查询缓存池中是否已存在已被创建好的所述内核标识对应的浏览器内 核对象;

内核调用子单元,用于若所述缓存池中已存在所述内核标识对应的浏览器内核对象,则 调用所述内核标识对应的浏览器内核对象作为所述打开外链的请求的浏览器内核对象;

内核创建子单元,用于若所述缓存池中未存在所述内核标识对应的浏览器内核对象,则 根据所述内核标识选择与所述网络应用对应的浏览器内核接口,调用所述选择的浏览器内核 接口为所述打开外链的请求创建浏览器内核对象。

作为上述技术方案的优选,所述窗口加载模块具体用于:

获取所述窗口的句柄,并将所述窗口标识和所述窗口的句柄返回给所述网络应用,使得 所述网络应用创建一个新的标签页面,根据所述窗口标识和所述窗口的句柄在所述标签页面 中加载所述窗口,并在所述窗口中打开所述外链对应的网页。

作为上述技术方案的优选,所述终端还包括:

权限标识获取模块,用于根据所述权限标识判断所述外链对应的网页能否调用本地服务;

其中,所述权限标识用于标识所述外链对应的网页调用本地服务的权限。

作为上述技术方案的优选,所述终端还包括:

进程管理模块,用于判断所述网络应用中的窗口数量是否小于预设阈值;

若所述网络应用中的窗口数量小于预设阈值,控制每一个窗口分别使用一个进程;

若所述网络应用的窗口数量大于等于预设阈值,控制两个或两个以上的窗口共用一个进 程。

作为上述技术方案的优选,所述终端还包括:

恢复模块,用于记录所述网络应用中打开的外链信息;

当所述网络应用发生故障时,调取所述记录的外链信息并将所述网络应用恢复至故障前 的状态。

本发明实施例提供的技术方案带来的有益效果是:通过在网络应用中建立多窗口展示的 浏览方式,并通过为每个新建立的标签页面创建单独的浏览器内核对象的多实例方式,实现 了在网络应用中不用跳出开放平台的环境即可打开外链的窗口,提高了用户的体验,并减轻 了网络应用开发者的负担提高了其应用的通用性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附 图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域 普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例1中提供的在网络应用中打开外链的方法的流程示意图;

图2是本发明实施例2中提供的在网络应用中打开外链的方法的流程示意图;

图3是本发明实施例3中提供的在网络应用中打开外链的终端的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进 一步地详细描述。

实施例1

参见图1,本发明实施例提供了一种在网络应用中打开外链的方法,包括:

步骤101:接收网络应用的打开外链的请求;

步骤102:根据所述打开外链的请求创建对应的窗口;

步骤103:在所述网络应用中创建标签页面,在所述标签页面中加载所述窗口,并在所 述窗口中打开所述外链对应的网页。

本发明实施例通过在网络应用中建立多窗口展示的浏览方式,并通过为每个新建立的标 签页面创建单独的浏览器内核对象的多实例方式,实现了在网络应用中不用跳出开放平台的 环境即可打开外链的窗口,提高了用户的体验,并减轻了网络应用开发者的负担提高了其应 用的通用性。

实施例2

参见图2,本发明实施例提供了一种在网络应用中打开外链的方法,包括:

步骤201:接收网络应用的打开外链的请求。

当网络应用页面上有打开外链的动作发生时,该页面通过浏览器内核的页面机制发出打 开该外链的事件,终端捕捉到该事件后,获取到该外链的URL(Universal Resource Locator, 统一资源定位符)地址。

步骤202:获取所述外链的权限标识,根据所述权限标识判断所述外链对应的网页能否 调用本地服务。

其中,所述权限标识用于标识所述外链对应的网页调用本地服务的权限。

本发明实施例中,终端可以为使用本地服务的外链页面提供一个专用接口。如果外链是 被开放平台接受的,则其权限标识则表示该外链可以调用终端提供的专用接口打开,允许其 访问终端的本地服务,否则禁止。对于这些禁止访问终端服务的页面,终端可以通过界面上 的标签高亮显示,以提醒用户这个外链对应的页面是不安全的。

能否调用终端提供的专用接口打开外链,可以检验该网络应用的外链是否可以调用终端 的本地服务,以使用终端提供的一些功能,如果无法调用终端提供的专用接口打开外链,则 无法调用终端的本地服务,无法使用终端提供的各种功能。其中,所述终端提供的功能可以 包括:微博分享、反馈、举报等功能。外链中的URL地址可能是指向一个广告、游戏等,其 性质多种多样。为了防止一些虚假的广告和钓鱼网站使用终端的服务非法的操作,终端不能 让每个打开的外链的标签页都能访问终端提供的服务,通过检查外链的权限标识,可以保证 终端的安全性。

可以理解的是,在本发明的其他实施例中,还可以通过其他方式来确保终端的安全性, 例如:可以预先设定黑名单,该黑名单中保存了不安全的网页的URL地址,检查外链对应的 URL地址是否在预先设定的黑名单中,若在黑名单中则不予响应请求,通过上述方式也可以 达到确保终端安全性的目的。

步骤203:根据所述打开外链的请求创建对应的窗口。

步骤203可以具体为:

步骤2031:根据所述打开外链的请求,创建浏览器内核对象。

步骤2031可以具体为:

步骤20311:获取所述网络应用预设的内核标识。

在为外链创建浏览器内核对象时,选择与内核标识相对应的浏览器内核接口为其创建浏 览器内核对象。设置浏览器内核接口,可以支持不同的浏览器内核,例如:本发明实施例可 以同时支持IE内核和webkit内核。鉴于网络应用所需的浏览器内核不同,因此需要判断网 络应用的内核标识,为其创建对应的浏览器内核对象。

步骤20312:查询缓存池中是否已存在所述内核标识对应的浏览器内核对象。

具体的,通过终端为该页面创建浏览器内核对象。优选的,还可以在创建前在缓存池中 查询是否已存在所述内核标识对应的浏览器内核对象,如果有则不需创建新的浏览器内核对 象,节省了打开页面的时间。其中,缓存池中缓存的浏览器内核对象可以是终端预先创建并 缓存的浏览器内核对象,也可以是本次打开网络应用的外链之前已创建并使用的浏览器内核 对象。该缓存池可以是终端中的界面上标签控件,也可以是网络应用中的标签页面,该缓存 池可使得在打开网络应用的外链时直接调用已缓存的浏览器内核对象作为打开外链的请求的 浏览器内核对象,从而提高了外链页面的打开速度。

步骤20313:若所述缓存池中已存在所述内核标识对应的浏览器内核对象,则调用所述 内核标识对应的浏览器内核对象作为所述打开外链的请求的浏览器内核对象。

步骤20314:若所述缓存池中未存在所述内核标识对应的浏览器内核对象,则根据所述 内核标识选择与所述网络应用对应的浏览器内核接口,调用所述选择的浏览器内核接口为所 述打开外链的请求创建浏览器内核对象。

需要说明的是,在网络应用里进行多窗口页面展示,需要实现浏览器内核的多实例,使 得界面和浏览器内核的解耦,浏览器的内核多实例是指一个网络应用中运行着多个浏览器内 核对象,一个页面对应一个浏览器内核对象。

步骤2032:根据所述浏览器内核对象,创建与所述浏览器内核对象关联的窗口,为所述 窗口分配窗口标识。

具体为,通过所述浏览器内核对象中的浏览接口绘制所述窗口,并为该窗口分配窗口标 识。

步骤204:在所述网络应用中创建标签页面,在所述标签页面中加载所述窗口,并在所 述窗口中打开所述外链对应的网页。

在网络应用中首先创建一个标签控件,代表创建了一个标签页面。获取所述窗口的句柄, 并,通过windows消息机制将窗口标识和窗口的句柄返回给所述网络应用,使得所述网络应 用创建一个新的标签页面,根据所述窗口标识和所述窗口的句柄在所述标签页面中加载所述 窗口,并在所述窗口中打开所述外链对应的网页。

将将所述窗口标识和所述窗口的句柄与所述标签页面进行关联,通过网络应用中的标签 控件与窗口标识进行映射保存,标签控件通过窗口标识的映射关系找到其窗口的句柄,再对 其进行操作,例如关闭标签页面时,同步通信至对应的窗口,使得其和标签页面同时关闭。

进一步的,网络应用原有的窗口也相应的隐藏起来,作为新创建的标签页面前的一个标 签页面。用户可以通过界面上的标签控件来操作多个窗口的,多个标签页面的切换其实不会 对现有的网络应用的架构造成根本的影响,仅仅是在用户界面和浏览窗口之间做一个隔离。 可以对各个打开的标签页面进行切换标签页面、关闭窗口、前进、后退、刷新等操作。

将该窗口的窗口标识和窗口的句柄加入到窗口列表中,所述窗口列表中保存有所有窗口、 各窗口对应的窗口标识以及各窗口的句柄之间的对应关系。其中,句柄是窗口的唯一标识, 句柄与窗口一一对应,句柄用来标识应用程序中的不同对象和同类对象中的不同的实例,例 如一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等,应用程序能够通过该句柄 找到该句柄对应的对象。例如:在窗口中嵌入web页面等等,需要先通过句柄找到该窗口, 才能进行对该窗口的操作。

浏览器内核对象与网络应用中的标签控件之间通过窗口标识来同步通信,窗口标识是一 个外链对应的窗口的唯一标识。采用这种方式,网络应用界面上的标签控件只拥有其对应窗 口标识,并不拥有这个窗口的实体,降低了耦合。例如当网络应用的窗口关闭时,需要该网 络应用对应打开的标签页面也关闭,而其内的标签页面仅是与其关联的一个窗口,并不在其 网络应用当中,因此需要通过页面对应的窗口标识告知该窗口进行关闭操作。

步骤205:判断所述网络应用中的窗口数量是否小于预设阈值;若所述网络应用中的窗 口数量小于预设阈值,控制每一个窗口分别使用一个进程;若所述网络应用的窗口数量大于 等于预设阈值,控制两个或两个以上的窗口共用一个进程。

由于浏览器内核可能会发生故障,如果从网络应用中打开的外链窗口都在同一个进程, 一个窗口的故障就会导致整个网络应用的故障。如果每个外链窗口都单独一个进程则会导致 资源的过度消耗,系统性能降低。因此需要使用一个策略来保持稳定性和性能的平衡,对于 不同的机器、不同的系统,不同的配置,可以同时打开的浏览器进程数是不一样的。

步骤206:记录所述网络应用中打开的外链信息;当所述网络应用发生故障时,调取所 述记录的外链信息并将所述网络应用恢复至故障前的状态。

本设计支持当网络应用在运行时发生故障时,用户重新启动该应用,自动提示用户恢复 故障前打开的窗口,其中故障包括:档机、重启、关闭等情况。将用户打开的每个外链的相 关信息进行记录,其中外链信息可以为URL地址、窗口的标题、已经打开的外链的个数中的 一种或多种信息,但也不限于这几种信息,所有外链对应的页面中包含的信息皆可用于为了 恢复故障前状态的信息都可进行记录。当用户重启该网络应用时,会去本地数据库读取这些 信息,迅速恢复成之前的状态。

本发明实施例通过在网络应用中建立多窗口展示的浏览方式,并通过为每个新建立的标 签页面创建单独的浏览器内核对象的多实例方式,实现了在网络应用中不用跳出开放平台的 环境即可打开外链的窗口,提高了用户的体验,并减轻了网络应用开发者的负担提高了其应 用的通用性。

实施例3

参见图3,本发明实施例提供了一种在网络应用中打开外链的终端,包括:

接收模块301,用于接收网络应用的打开外链的请求;

窗口创建模块302,用于根据所述接收模块接收到的打开外链的请求创建对应的窗口;

网页加载模块303,用于在所述网络应用中创建标签页面,在所述标签页面中加载所述 窗口创建模块创建的窗口,并在所述窗口中打开所述外链对应的网页。

在具体实施例中,所述窗口创建模块302,包括:

内核创建单元3021,用于根据所述打开外链的请求,创建浏览器内核对象;

窗口创建单元3022,用于根据所述浏览器内核对象,创建与所述浏览器内核对象关联的 窗口,为所述窗口分配窗口标识。

优选的,所述内核创建单元3021,具体包括:

获取子单元30211,用于获取所述网络应用预设的内核标识;

查询子单元30212,用于查询缓存池中是否已存在已被创建好的所述内核标识对应的浏 览器内核对象;

内核调用子单元30213,用于若所述缓存池中已存在所述内核标识对应的浏览器内核对 象,则调用所述内核标识对应的浏览器内核对象作为所述打开外链的请求的浏览器内核对象;

内核创建子单元30214,用于若所述缓存池中未存在所述内核标识对应的浏览器内核对 象,则根据所述内核标识选择与所述网络应用对应的浏览器内核接口,调用所述选择的浏览 器内核接口为所述打开外链的请求创建浏览器内核对象。

优选的,所述窗口加载模块303具体用于:

获取所述窗口的句柄,并将所述窗口标识和所述窗口的句柄返回给所述网络应用,使得 所述网络应用创建一个新的标签页面,根据所述窗口标识和所述窗口的句柄在所述标签页面 中加载所述窗口,并在所述窗口中打开所述外链对应的网页。

优选的,所述终端还包括:

权限标识获取模块304,用于根据所述权限标识判断所述外链对应的网页能否调用本地 服务;

其中,所述权限标识用于标识所述外链对应的网页调用本地服务的权限。

进程管理模块305,用于判断所述网络应用中的窗口数量是否小于预设阈值;

若所述网络应用中的窗口数量小于预设阈值,控制每一个窗口分别使用一个进程;

若所述网络应用的窗口数量大于等于预设阈值,控制两个或两个以上的窗口共用一个进 程。

恢复模块306,用于记录所述网络应用中打开的外链信息;

当所述网络应用发生故障时,调取所述记录的外链信息并将所述网络应用恢复至故障前 的状态。

本发明实施例通过在网络应用中建立多窗口展示的浏览方式,并通过为每个新建立的标 签页面创建单独的浏览器内核对象的多实例方式,实现了在网络应用中不用跳出开放平台的 环境即可打开外链的窗口,提高了用户的体验,并减轻了网络应用开发者的负担提高了其应 用的通用性。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成, 也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中, 上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之 内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号