掌桥专利:专业的专利平台
掌桥专利
首页

检测网站支持的浏览器的方法、装置、设备及存储介质

文献发布时间:2023-06-19 11:19:16


检测网站支持的浏览器的方法、装置、设备及存储介质

技术领域

本公开涉及互联网测试技术领域,尤其涉及检测网站支持的浏览器的方法、装置、设备及存储介质。

背景技术

目前,越来越多的用户通过各种自己喜爱的浏览器进行网页浏览。由于浏览器的种类繁多,网页必须能兼容多种浏览器,以确保网页在不同的浏览器中具有相同的显示效果,例如外观。

相关技术中,检测网站支持的浏览器的方法为:针对每一待测试的浏览器,利用待测试的浏览器访问网站中的超链接,以得到交互信息,该交互信息包含超链接打开后的网页的内容,并由测试人员确定该浏览器打开的网页是否能够正常显示,例如,该浏览器打开的网页是否和标准浏览器打开的网页显示界面一致,以确定该待测试的浏览器是否兼容该网站。

目前,检测网站兼容浏览器的方法人工成本较高,且耗时较长。

发明内容

本公开提供一种检测网站支持的浏览器的方法、装置、设备及存储介质,以至少解决相关技术中检测网站兼容浏览器的方法人工成本较高,且耗时较长的问题。本公开的技术方案如下:

根据本公开实施例的第一方面,提供一种检测网站支持的浏览器的方法,包括:获取所述网站对应的至少一个系统依赖对象,所述网站在支持所述至少一个系统依赖对象的浏览器上呈现的网页具有预设显示效果;基于各浏览器分别支持的各系统依赖对象以及所述至少一个系统依赖对象,确定至少一个第一浏览器,所述第一浏览器至少支持所述至少一个系统依赖对象;确定所述网站支持所述至少一个第一浏览器。。

结合第一方面,在第一种可能实现方式中,所述获取所述网站对应的至少一个系统依赖对象包括:

获取所述网站对应的各资源对象;

针对所述各资源对象中任一所述资源对象,若预先设置的各系统依赖对象中包括所述资源对象,确定所述资源对象为所述网站对应的系统依赖对象。

结合第一方面,在第二种可能实现方式中,所述基于各浏览器分别支持的各系统依赖对象以及所述至少一个系统依赖对象,确定至少一个第一浏览器步骤包括:

针对所述网站对应的每一系统依赖对象,基于各浏览器分别支持的各系统依赖对象,为支持所述系统依赖对象的浏览器设置第一标识,为不支持所述系统依赖对象的至少一个浏览器设置第二标识;

将设置有与所述至少一个系统依赖对象相同数目个所述第一标识的浏览器,确定为所述第一浏览器。

结合第一方面,在第三种可能实现方式中,所述基于各浏览器分别支持的各系统依赖对象以及所述至少一个系统依赖对象,确定至少一个第一浏览器步骤包括:

针对所述网站对应的每一所述系统依赖对象,基于各浏览器分别支持的各系统依赖对象,确定支持所述网站对应的系统依赖对象的至少一个浏览器;

将支持各所述网站对应的系统依赖对象的浏览器,确定为所述第一浏览器。

结合第一方面,在第四种可能实现方式中,还包括:

基于各浏览器分别支持的各系统依赖对象以及所述至少一个系统依赖对象,确定至少一个第二浏览器,所述第二浏览器不支持所述至少一个系统依赖对象中的一个或多个目标系统依赖对象。

结合第一方面,在第五种可能实现方式中,还包括:

展示各所述第二浏览器对应的自身不支持的目标系统依赖对象。

根据本公开实施例的第二方面,提供一种检测网站支持的浏览器的装置,包括:获取模块,被配置为获取所述网站对应的至少一个系统依赖对象,所述网站在支持所述至少一个系统依赖对象的浏览器上呈现的网页具有预设显示效果;第一确定模块,被配置为基于各浏览器分别支持的各系统依赖对象以及所述获取模块获得的所述至少一个系统依赖对象,确定至少一个第一浏览器,所述第一浏览器至少支持所述至少一个系统依赖对象;第二确定模块,被配置为确定所述网站支持所述至少一个第一浏览器。

结合第二方面,在第一种可能实现方式中,所述获取模块具体被配置为:

第一获取单元,被配置为获取所述网站对应的各资源对象;

第一确定单元,被配置为针对所述第一获取单元获得的各资源对象中任一所述资源对象,若预先设置的各系统依赖对象中包括所述资源对象,确定所述资源对象为所述网站对应的系统依赖对象。

结合第二方面,在第二种可能实现方式中,所述第一确定模块具体被配置为:

设置单元,被配置为针对所述网站对应的每一系统依赖对象,基于各浏览器分别支持的各系统依赖对象,为支持所述系统依赖对象的浏览器设置第一标识,为不支持所述系统依赖对象的至少一个浏览器设置第二标识;

第二确定单元,被配置为将设置有与所述至少一个系统依赖对象相同数目个所述第一标识的浏览器,确定为所述第一浏览器。

结合第二方面,在第三种可能实现方式中,所述第一确定模块具体被配置为:

第三确定单元,被配置为针对所述网站对应每一所述系统依赖对象,基于各浏览器分别支持的各系统依赖对象,确定支持所述网站对应的系统依赖对象的至少一个浏览器;

第四确定单元,被配置为将支持各所述网站对应的系统依赖对象的浏览器,确定为所述第一浏览器。

结合第二方面,在第四种可能实现方式中,还包括:

第三确定模块,被配置为基于各浏览器分别支持的各系统依赖对象以及所述至少一个系统依赖对象,确定至少一个第二浏览器,所述第二浏览器不支持所述至少一个系统依赖对象中的一个或多个目标系统依赖对象。

结合第二方面,在第五种可能实现方式中,还包括:

展示模块,被配置为展示各所述第二浏览器对应的自身不支持的所述目标系统依赖对象。

根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现如第一方面所述的检测网站支持的浏览器的方法。

根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面所述的检测网站支持的浏览器的方法。

根据本公开实施例的第五方面,提供一种计算机程序产品,可加载到计算机的内部存储器,例如上述第三方面所述电子设备包含的存储器中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现如第一方面所述检测网站支持的浏览器的方法。

根据本公开实施例的第六方面,提供一种计算机程序/指令,所述计算机程序/指令被第三方面所示的电子设备包含的处理器执行时实现如第一方面所述检测网站支持的浏览器的方法。

本公开的实施例提供的技术方案至少带来以下有益效果:

网站对应有至少一个系统依赖对象,网站在支持所述至少一个系统依赖对象的浏览器上呈现的网页具有预设显示效果,网站在不支持所述至少一个系统依赖对象中任一系统依赖对象的浏览器上呈现的网页不具有预设显示效果,所以确定网站支持的浏览器的过程,即为确定浏览器是否支持所述至少一个系统依赖对象的过程;可以预先获得各浏览器支持的各系统依赖对象,然后基于各浏览器支持的各系统依赖对象和所述至少一个系统依赖对象,确定至少支持所述至少一个系统依赖对象的至少一个第一浏览器,由于第一浏览器支持所述至少一个系统依赖对象,所以网站支持第一浏览器。本公开实施例无需人工操作即可确定网站与哪些浏览器兼容,能够有效节约人工成本,且无需对网站中各个网页分别打开并检测,节省了时间。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。

图1是根据一示例性实施例示出的实施环境的架构图;

图2是根据一示例性实施例示出的一种检测网站支持的浏览器的方法的流程图;

图3是根据一示例性实施例示出的展示界面的示意图;

图4是根据一示例性实施例示出的一种检测网站支持的浏览器的装置框图;

图5是根据一示例性实施例示出的一种用于电子设备的框图。

具体实施方式

为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。

需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例提供了一种检测网站支持的浏览器的方法、装置、电子设备及存储介质,在介绍本公开实施例提供的技术方案之前,先对本公开实施例涉及的应用场景以及实施环境进行介绍。

首先对本公开实施例涉及的应用场景进行介绍。

本公开实施例提供的技术方案可以应用于多种应用场景,本公开实施例提供但不限于以下三种应用场景。

第一种应用场景,开发工程师在网站中增加新功能时,需要确定网站已经兼容/支持的各浏览器。

若在网站中增加新功能,可以利用本公开实施例提供的方法检测网站已经兼容/支持哪些浏览器,以指导开发工程师在撰写新功能对应的程序代码时,使用网站兼容/支持的各浏览器共同支持的系统依赖对象编写程序代码,以使得各浏览器均兼容/支持该网站的新功能。不能因为在网站中增加一个新功能,导致网站不兼容/不支持未增加新功能之前能够兼容/支持的浏览器。

例如,若与网站兼容/支持的浏览器包括chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器,在网站中增加新功能后,与网站兼容/支持的浏览器应该也包括chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器。

尽量避免在网站中增加新功能后,导致网站不支持一个或多个之前能够兼容的浏览器的情况,例如,firefox浏览器、Opera浏览器。

第二种应用场景,开发工程师在网站中增加新功能之前,可以利用本公开实施例提供的方法检测网站已经兼容/支持的各浏览器,开发工程师在网站中增加新功能之后,可以利用本公开实施例提供的方法检测网站目前兼容/支持的各浏览器,若增加新功能前后网站兼容/支持的各浏览器相同,无需改写程序,若不相同,需要对新功能对应的程序进行改写,以使得增加新功能前后网站兼容/支持的各浏览器相同。

第三种应用场景,越来越多的用户通过各种自己喜爱的浏览器进行网页浏览,为了满足各用户的需求,需要网站能够兼容/支持多种浏览器。在使得网站能够兼容/支持多种浏览器之前,可以利用本公开实施例提供的方法检测网站兼容/支持哪些浏览器,不兼容/不支持哪些浏览器,从而可以视需求情况进行兼容处理。

其次对本公开实施例涉及的实施环境进行介绍。

图1是根据一示例性实施例示出的实施环境的架构图,下述检测网站支持的浏览器的方法可以应用于该实施环境,该实施环境包括:电子设备11、第一数据库12以及第二数据库13。

示例性的,电子设备可以为任何一种可与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如,手机、平板电脑、掌上电脑、个人计算机、可穿戴设备、智能电视等。

示例性的,电子设备可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者,是一个云计算服务中心。服务器可以包括处理器、存储器以及网络接口等。

示例性的,第一数据库12可以位于电子设备11中,也可以独立于电子设备11;第二数据库12可以位于电子设备11中,也可以独立于电子设备11。

示例性的,电子设备11可以通过有线网络或无线网络分别与第一数据库12和第二数据库13建立连接并通信。

经过发明人研究发现,对于每一浏览器而言,网站兼容/支持浏览器的原理是:网站对应的一个或多个系统依赖对象,该浏览器均支持。浏览器支持系统依赖对象是指网站的程序运行过程中,在执行到系统依赖对象时,能够通过浏览器调用自身支持的该系统依赖对象对应的实现方法,若浏览器能够成功调用,则认为该浏览器支持该系统依赖对象,若浏览器不能够成功调用,则认为该浏览器不支持该系统依赖对象。即网站的程序能够通过该浏览器正常运行。

示例性的,系统依赖对象可以为浏览器定义的变量或浏览器封装的实现方法对应的函数,例如,浏览器定义的全局变量、基本数据类型的构造函数、Inter SectionObserver API、Object.defineProperty()、Promise.protype.finally()、Arrow.from()、new Set()等。

示例性的,可以将“浏览器封装的实现方法对应的函数”称为原生函数。

下面以系统依赖对象为Object.defineProperty()为例进行说明。

假设网站的程序包括Object.defineProperty()这一系统依赖对象,但是浏览器A中并未封装Object.defineProperty()的实现方法,即浏览器不支持Object.defineProperty()。若浏览器A打开网站的超链接,在网站的程序运行期间,若执行到Object.defineProperty(),网站的程序会通过浏览器A调用Object.defineProperty()对应的实现方法,由于浏览器A并未封装Object.defineProperty()的实现方法,所以无法执行Object.defineProperty(),导致Object.defineProperty()相应的功能无法实现,使得网站在浏览器A中无法呈现相应的显示效果,即网站不兼容/不支持浏览器A。

第一数据库12存储有各浏览器分别支持的各系统依赖对象。

第二数据库13存储有各系统依赖对象。

示例性的,第一数据库12与第二数据库13可以为同一数据库,或,不同的数据库。

若第一数据库12与第二数据库13为不同数据库,那么,第二数据库13可以存储各系统依赖对象,无需存储哪些浏览器支持哪些系统依赖对象。

电子设备11可以利用第二数据库13确定网站对应的各资源对象中有哪些资源对象是系统依赖对象。示例性的,各资源对象与第二数据库12的交集为所述网站对应的至少一个系统依赖对象。

电子设备11可以利用第一数据库12以及网站对应的各资源对象包含的至少一个系统依赖对象,确定网站支持的至少一个第一浏览器。

示例性的,第一数据库12存储有各浏览器的类型名称,一个浏览器的类型明名称包括浏览器的名称以及浏览器的版本。

各浏览器包括但不限于:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器、IE9浏览器、IE10浏览器以及IE11浏览器。

示例性的,第一数据库中具有同一名称但版本不同的浏览器为不同的浏览器,例如,IE8、IE9、IE10、IE11为不同的浏览器。

示例性的,针对每一浏览器,获得该浏览器支持的各系统依赖对象的方式有多种,本公开实施例提供但不限于以下两种。

第一种实现方式:搜集网络上公布的浏览器支持的各系统依赖对象。

第二种实现方式:编写检测程序代码,以检测浏览器支持的各系统依赖对象。

下面以Chrome浏览器为例进行说明,示例性的,检测Chrome浏览器支持的各系统依赖对象的检测程序代码可以如下:

示例性的,不同浏览器对应的检测程序代码可能不同。

可以通过上述两种实现方式对第一数据库的内容进行补充。

本领域技术人员应能理解上述电子设备和数据库仅为举例,其他现有的或今后可能出现的电子设备或数据库如可适用于本公开,也应包含在本公开保护范围以内,并在此以引用方式包含于此。

下面结合附图对本公开实施例提供的检测网站支持的浏览器的方法进行说明。

图2是根据一示例性实施例示出的一种检测网站支持的浏览器的方法的流程图,检测网站支持的浏览器的方法应用于电子设备11中,在实施过程中包括以下步骤S21至步骤S23。

在步骤S21中,获取所述网站对应的至少一个系统依赖对象,所述网站在支持所述至少一个系统依赖对象的浏览器上呈现的网页具有预设显示效果。

网站支持浏览器的问题,是指网站的网页在各种浏览器上的显示效果可能不一致而产生浏览器和网页间的兼容问题。在网站的设计和制作中,做好浏览器兼容,才能够让网站在不同的浏览器下都正常显示。本公开实施例中称网站在兼容该网站的不同浏览器下的正常显示效果为预设显示效果。

示例性的,一个系统依赖对象被执行时是指,浏览器调用自身支持的该系统依赖对象对应的实现方法。

示例性的,系统依赖对象为变量或函数,若系统依赖对象为函数,那么,函数对应的实现方法即为函数对应的实现程序代码。浏览器封装有该函数对应的实现程序代码。

函数的封装是指将一个或者多个功能通过函数、类的方式封装起来,对外只提供一个函数名称。若开发工程师在撰写网站的程序的过程中需要执行同样的功能,开发工程师不需要写同样的函数,可以仅写出该函数对应的函数名称。

若系统依赖对象为变量,变量对应的实现方法为浏览器定义的该变量的含义。

在步骤S22中,基于各浏览器分别支持的各系统依赖对象以及所述至少一个系统依赖对象,确定至少一个第一浏览器,所述第一浏览器至少支持所述至少一个系统依赖对象。

示例性的,可以从第一数据库存储的各浏览器分别支持的各系统依赖对象中,确定至少支持所述至少一个系统依赖对象的至少一个第一浏览器。

在一可选实现方式中,电子设备11运行网站的程序,获得网站对应的所述至少一个系统依赖对象。

在一可选实现方式中,其他设备运行网站的程序,得到网站对应的所述至少一个系统依赖对象,并发送至电子设备11,即电子设备11可以从其他设备中接收所述至少一个系统依赖对象。

示例性的,上述程序可以为JS(JavaScript)程序。

可以理解的是,程序在运行过程中可能涉及多个阶段,例如JS程序在运行过程中涉及编译阶段和运行阶段,示例性的,在程序的编译阶段获得所述至少一个系统依赖对象。

示例性的步骤S21具体包括以下步骤S211至步骤S214。

在步骤S211中,将程序包含的多个字符串分割为至少一个词法单元。

示例性的,编译阶段包括词法分析和语法分析,词法分析用于将程序(例如JS程序)中的字符串分割为有意义的词法单元,比如将字符串var a=1划分为以下四个词法单元:var、a、=、1。

在步骤S212中,基于各字符串分别对应的至少一个词法单元,转化成AST树。

示例性的,语法分析用于将各字符串分别对应的至少一个词法单元转换成一颗抽象语法树(abstractsyntaxcode,AST)。

在步骤S213中,将AST树包含的节点转换成预设标准对应的节点,得到转换后的AST树。

示例性的,AST树中包含使用第一标准编写的节点,节点为变量或函数。

示例性的,浏览器无法解读使用ES6标准编写的代码,浏览器能够解读使用ES5标准编写的代码。那么第一标准为ES(ECMAScript)6标准,预设标准为ES5标准。

例如,若AST树中节点为let或const(let或const为使用ES6标准编写的代码),可以将let或const转换成var(使用ES5标准编写的代码)。

在步骤S214中,基于转换后的AST生成基本代码,从基本代码中获得所述至少一个系统依赖对象。

示例性的,基于转换后的AST生成基本代码的实现方式为:遍历转换后的AST,构建可以表示转换后代码的字符串,以得到基本代码。

在步骤S23中,确定所述网站支持所述至少一个第一浏览器。

示例性的,在步骤S23之后,还可以包括步骤:展示所述至少一个第一浏览器的类型名称。

示例性的,一个浏览器的类型名称包括浏览器的名称以及版本号,例如,类型名称为IE9。

本公开实施例提供的检测网站支持的浏览器的方法中,网站对应有至少一个系统依赖对象,网站在支持所述至少一个系统依赖对象的浏览器上呈现的网页具有预设显示效果,网站在不支持所述至少一个系统依赖对象中任一系统依赖对象的浏览器上呈现的网页不具有预设显示效果,所以确定网站支持的浏览器的过程,即为确定浏览器是否支持所述至少一个系统依赖对象的过程;可以预先获得各浏览器支持的各系统依赖对象,然后基于各浏览器支持的各系统依赖对象和所述至少一个系统依赖对象,确定至少支持所述至少一个系统依赖对象的至少一个第一浏览器,由于第一浏览器支持所述至少一个系统依赖对象,所以网站支持第一浏览器。本公开实施例无需人工操作即可确定网站与哪些浏览器兼容,能够有效节约人工成本,且无需对网站中各个网页分别打开并检测,节省了时间。

本公开实施例中步骤S21的实现方式有多种,本申请实施例提供但不限于以下两种方法。

第一种实现方式,该方式在实施过程中包括以下步骤A11至步骤A12。

在步骤A11中,获取所述网站对应的各资源对象。

所述各资源对象是所述网站呈现在浏览器上的基础。通过运行所述网站对应的各资源对象实现在浏览器上呈现网站的功能。

示例性的,一个资源对象为变量或函数。

示例性的,步骤A11的实现方式可以包括步骤S211至步骤S213以及步骤“基于转换后的AST生成基本代码,从基本代码中获得各资源对象”。

可以理解的是,基本代码,如上述步骤S214提及的基本代码,包含步骤A11获得的各资源对象,各资源对象可能是系统依赖对象,也可能是程序员自定义的资源对象。

自定义的资源对象可以为程序员在编写网站的程序的过程中,开发工程师自己定义的函数,或,开发工程师自己定义的变量。程序员在程序中自定义的函数或变量,需要编写该函数或变量对应的实现方法,例如,程序员定义的函数A的实现方法可以如下:

#include

int main A()

{

printf("Hello World!\n");

}

由于程序员在程序中定义了上述函数A的实现方法,在运行该函数A时,可以基于程序员编写的实现方法运行该函数A。即自定义的资源对象的实现方法被包括在程序中,可以通过运行程序包含的资源对象的实现方法实现该资源对象对应的功能。

系统依赖对象可以是程序员在编写网站的程序的过程中,使用浏览器支持的已有的函数或变量,无需在程序中定义该系统依赖对象的实现方法,例如,String()、Number()等函数,程序员在编写程序的过程中可以直接使用这些函数,但是并不编写该函数的实现方法,这些函数的实现方法可以存储在已有的函数库中,例如,DLL(Dynamic LinkLibrary)动态链接库。

程序在浏览器中运行时,若运行至系统依赖对象时,若浏览器支持该系统依赖对象,那么,可以从相应函数库中调用其实现方法从而能够实现该系统依赖对象对应的功能。

对于浏览器而言,若程序包括自定义资源对象的实现方法,则各浏览器均支持自定义的资源对象。若程序不包括系统依赖对象的实现方法,如果浏览器不支持该系统依赖对象,那么无法运行该系统依赖对象的实现方法,从而无法实现该系统对象对应的功能;如果浏览器支持该系统依赖对象,那么可以运行该系统依赖对象的实现方法,从而可以实现该系统对象对应的功能。

在步骤A12中,针对所述各资源对象中任一所述资源对象,若预先设置的各系统依赖对象中包括所述资源对象,确定所述资源对象为所述网站对应的系统依赖对象。

示例性的,步骤A12可以得到一个或多个系统依赖对象。

示例性的,针对所述各资源对象中任一所述资源对象,若第二数据库存储的各系统依赖对象中包括所述资源对象,确定所述资源对象为系统依赖对象。

示例性的,针对所述各资源对象中任一所述资源对象,若第二数据库存储的各系统依赖对象不包括所述资源对象,确定所述资源对象为自定义的资源对象。

第二数据库13用于存储多个系统依赖对象,若第二数据库存储的各系统依赖对象中包括该资源对象,说明该资源对象为系统依赖对象。

第二种实现方式,开发工程师编写网站的程序中包括该网站对应的所述至少一个系统依赖对象。

本公开实施例中步骤S22的实现方式有多种,本申请实施例提供但不限于以下两种方法。

第一种实现方式,该方法在实施过程中包括以下步骤B11至步骤B12。

在步骤B11中,针对所述网站对应的每一系统依赖对象,基于各浏览器分别支持的各系统依赖对象,为支持所述系统依赖对象的浏览器设置第一标识,为不支持所述系统依赖对象的至少一个浏览器设置第二标识。

示例性的,第一标识可以为任一个或多个字符,第二标识可以为任一个或多个字符,第一标识与第二标识不同。

示例性的,一个字符可以为数字、字母、特殊符号以及数学符号中的任一个。

假设“至少一个系统依赖对象”的数目为五,且分别为:Inter Section ObserverAPI、Object.defineProperty()、Promise.protype.finally()、Arrow.from()以及newSet()。第一数据库包括的浏览器的类型名称包括:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器。

对于Inter Section Observer API而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器都支持Inter Section Observer API;对chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器分别设置第一标识;IE8浏览器不支持InterSection Observer API,对IE8浏览器设置第二标识。

对于Object.defineProperty()而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器都支持Inter Section Observer API;对chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器分别设置第一标识。

对于Promise.protype.finally()而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器都支持Promise.protype.finally();对chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器分别设置第一标识;IE8浏览器不支持Promise.protype.finally(),对IE8浏览器设置第二标识。

对于Arrow.from()而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器都支持Arrow.from();对chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器分别设置第一标识;IE8浏览器不支持Arrow.from(),对IE8浏览器设置第二标识。

对于new Set()而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器都支持new Set();对chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器分别设置第一标识。

在步骤B12中,将设置有与所述至少一个系统依赖对象相同数目个所述第一标识的浏览器,确定为所述第一浏览器。

示例性的,步骤B12可以得到一个或多个第一浏览器。

仍以上述为例,“所述至少一个系统依赖对象”包括五个系统依赖对象,对于chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器而言,均对应有五个第一标识,因此,将chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器分别确定为第一浏览器。对于IE8浏览器而言,对一个有两个第一标识,确定其为第二浏览器。

本公开实施例中,第一浏览器是指网站兼容的浏览器,第二浏览器是指网站不兼容的浏览器。

第二种实现方式,该方法在实施过程中包括以下步骤B21至步骤B23。

在步骤B21中,针对各浏览器中每一浏览器,检测该浏览器支持的各系统依赖对象是否包括所述至少一个系统依赖对象,若是执行步骤B22。

示例性的,针对每一浏览器,遍历该浏览器支持的各系统依赖对象,确定其支持各系统依赖对象是否包括所述至少一个系统依赖对象,若包括,确定该浏览器为第一浏览器,若不包括,确定该浏览器为第二浏览器。

在步骤B22中,确定该浏览器为第一浏览器。

第三种实现方式,该方法在实施过程中包括以下步骤B31至步骤B32。

在步骤B31中,针对所述网站对应的每一所述系统依赖对象,基于各浏览器分别支持的各系统依赖对象,确定支持所述网站对应的系统依赖对象的至少一个浏览器。

在步骤B32中,将支持各所述网站对应的系统依赖对象的至少一个浏览器,确定为至少一个所述第一浏览器。

示例性的,针对网站对应的每一系统依赖对象,从各浏览器中筛选出支持该系统依赖对象的第一浏览器集合,一个第一浏览器集合包括一个或多个浏览器;得到与所述至少一个系统依赖对象相同数目个浏览器集合;获得各第一浏览器集合的交集,该交集包含的浏览器即为第一浏览器。

假设,网站对应的所有系统依赖对象的数目为五,且分别为:Inter SectionObserver API、Object.defineProperty()、Promise.protype.finally()、Arrow.from()以及new Set()。第一数据库包括的浏览器的类型名称包括:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器。

对于Inter Section Observer API而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器都支持Inter Section Observer API;那么,支持InterSection Observer API的第一浏览器集合包括:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器。

对于Object.defineProperty()而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器都支持Inter Section Observer API;那么,支持Object.defineProperty()的第一浏览器集合包括:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器。

对于Promise.protype.finally()而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器都支持Promise.protype.finally();那么,支持Promise.protype.finally()的第一浏览器集合包括:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器。

对于Arrow.from()而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器都支持Arrow.from();那么,支持Arrow.from()的第一浏览器集合包括:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器。

对于new Set()而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器都支持new Set();那么,支持new Set()的第一浏览器集合包括:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器。

支持Inter Section Observer API的第一浏览器集合、支持Object.defineProperty()的第一浏览器集合、支持Promise.protype.finally()的第一浏览器集合、支持Arrow.from()的第一浏览器集合,以及,支持new Set()的第一浏览器集合的交集为:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器,那么,chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器均为第一浏览器。

可以理解的是,有时候需要扩展网站兼容的浏览器,即对网站的程序进行改写,使得网站可以兼容之前不兼容的浏览器。在扩展网站兼容的浏览器时,需要确定网站不兼容哪些浏览器。

基于此,本公开实施例提供的检测网站支持的浏览器的方法还包括以下步骤C11。

在步骤C11中,基于各浏览器分别支持的各系统依赖对象以及所述至少一个系统依赖对象,确定至少一个第二浏览器,所述第二浏览器不支持所述至少一个系统依赖对象中的一个或多个目标系统依赖对象。

示例性的,步骤C11的实现方式有多种,本公开实施例提供但不限于以下两种。

第一种实现方式包括步骤B11以及步骤C111。

步骤B11可以参见上述介绍,这里不再赘述。

在步骤C111中,将设置有小于与所述至少一个系统依赖对象相同数目个所述第一标识的至少一个浏览器,确定为至少一个所述第二浏览器。

仍以上述为例,“所述至少一个系统依赖对象”包括五个系统依赖对象。对于IE8浏览器而言,对一个有两个第一标识,由于2<5,所以确定其为第二浏览器。

第二种实现方式包括步骤B21以及步骤B23。

在步骤B21中,针对各浏览器中每一浏览器,检测该浏览器支持的各系统依赖对象是否包括所述至少一个系统依赖对象,若否执行步骤B23。

示例性的,针对每一浏览器,遍历该浏览器支持的各系统依赖对象,确定其支持各系统依赖对象是否包括所述至少一个系统依赖对象,若包括,确定该浏览器为第一浏览器,若不包括,确定该浏览器为第二浏览器。

在步骤B23中,确定该浏览器为第二浏览器。

第三种实现方式,该方法在实施过程中包括以下步骤C21至步骤C22。

在步骤C21中,针对所述网站对应的每一所述系统依赖对象,基于各浏览器分别支持的各系统依赖对象,确定不支持所述系统依赖对象的至少一个浏览器,以得到不支持所述至少一个系统依赖对象中一个或多个目标系统依赖对象的至少一个浏览器。

在步骤C22中,将不支持所述至少一个系统依赖对象中一个或多个目标系统依赖对象的至少一个浏览器,确定为至少一个所述第二浏览器。

示例性的,针对网站对应的每一系统依赖对象,从各浏览器中筛选出不支持该系统依赖对象的第二浏览器集合,一个第二浏览器集合包括一个或多个浏览器;得到与所述至少一个系统依赖对象相同数目个浏览器集合;获得各第二浏览器集合的并集,该并集包含的浏览器即为第二浏览器。

假设网站对应的所有系统依赖对象的数目为五,且分别为:Inter SectionObserver API、Object.defineProperty()、Promise.protype.finally()、Arrow.from()以及new Set()。第一数据库包括的浏览器的类型名称包括:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器。

对于Inter Section Observer API而言,假设IE8浏览器不支持Inter SectionObserver API;那么,不支持Inter Section Observer API的第二浏览器集合包括:IE8浏览器。

对于Object.defineProperty()而言,假设chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器都支持Inter Section Observer API;那么,不存在不支持Object.defineProperty()的第二浏览器集合。

对于Promise.protype.finally()而言,chrome浏览器不支持Promise.protype.finally();那么,不支持Promise.protype.finally()的第二浏览器集合包括:chrome浏览器。

对于Arrow.from()而言,假设firefox浏览器不支持Arrow.from();那么,不支持Arrow.from()的第二浏览器集合包括:firefox浏览器。

对于new Set()而言,假设chrome浏览器、firefox浏览器不支持new Set();那么,不支持new Set()的第二浏览器集合包括:chrome浏览器、firefox浏览器。

不支持Inter Section Observer API的第二浏览器集合、不支持Promise.protype.finally()的第二浏览器集合、不支持Arrow.from()的第二浏览器集合,以及,不支持new Set()的第二浏览器集合的并集为:IE8浏览器、chrome浏览器、firefox浏览器,那么,IE8浏览器、chrome浏览器、firefox浏览器均为第二浏览器。

可以理解的是,在扩展网站兼容的浏览器时,需要确定网站不兼容哪些浏览器。针对每一浏览器,需要确定浏览器不兼容网站的原因,以便指导开发工程师确定兼容处理的方法。

基于此,本公开实施例提供的检测网站支持的浏览器的方法还包括:展示各第二浏览器对应的自身不支持的目标系统依赖对象。

示例性的,一个第二浏览器不支持的目标系统依赖对象的数目可以为一个或多个。

由于开发工程师可以看到所述至少一个第二浏览器分别对应的不支持的一个或多个目标系统依赖对象,从而可以指导开发工程师确定兼容处理的方法。

示例性的,展示所述至少一个第二浏览器对应的自身不支持的一个或多个所述目标系统依赖对象的方式可以为用表格的形式展示或用文本的形式展示。

下面以用表格的形式为例进行说明。图3是根据一示例性实施例示出的展示界面的示意图。

假设“至少一个系统依赖对象”包括五个系统依赖对象,分别为:Inter SectionObserver API、Object.defineProperty()、Promise.protype.finally()、Arrow.from()以及new Set()。各的浏览器的类型名称包括:chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器、IE8浏览器。

图3示出了各浏览器是否支持各系统依赖对象的示意图。

示例性的,图3中,用“√”表示支持,用“×”表示不支持。示例性的,图3所示的“√”可以为上述提及的第一标识的一种表现形式,“×”可以为上述提及的第二标识的一种表现形式。

示例性的,“√”的颜色与“×”的颜色不同,例如,“√”为绿色,“×”为红色。

示例性的,“√”的颜色与“×”的颜色相同。

通过图3可以明显看出,由于chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器都支持网站对应的所述至少一个系统依赖对象,所以网站兼容chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器,即chrome浏览器、firefox浏览器、Opera浏览器、Safri浏览器为本公开实施例提及的第一浏览器。

通过图3可以看出,网站之所以不兼容IE8浏览器,是因为IE8浏览器不支持InterSection Observer API、Promise.protype.finally()以及Arrow.from()这三个目标系统依赖对象,即为IE8浏览器为本公开实施例提及的第二浏览器。

示例性的,若需要网站兼容IE8浏览器,那么,需要用其他方法替代Inter SectionObserver API、Promise.protype.finally()以及Arrow.from()三个目标系统依赖对象。

例如,针对Inter Section Observer API,可以编写polyfill(垫片库)模拟InterSection Observer API,Promise.protype.finally()以及Arrow.from()同理,不再赘述。

假设Inter Section Observer API对应polyfill A。示例性的,兼容IE8的网站的程序包括if(浏览器的类型名称==IE8){polyfill A};else,Inter Section ObserverAPI。Promise.protype.finally()以及Arrow.from()同理,不再赘述。

即若打开网站的超链接的浏览器为IE8浏览器,那么,在执行polyfill A时,若打开网站的超链接的浏览器不是IE8浏览器,则执行Inter Section Observer API。

上述本申请公开的实施例中详细描述了方法,对于本申请的方法可采用多种形式的装置实现,因此本申请还公开了多种装置,下面给出具体的实施例进行详细说明。

图4是根据一示例性实施例示出的一种检测网站支持的浏览器的装置框图。参照图4,该装置包括获取模块41、第一确定模块42以及第二确定模块43,其中:

该获取模块41,被配置为被配置为获取所述网站对应的至少一个系统依赖对象,所述网站在支持所述至少一个系统依赖对象的浏览器上呈现的网页具有预设显示效果;该第一确定模块42,被配置为基于各浏览器分别支持的各系统依赖对象以及所述获取模块获得的所述至少一个系统依赖对象,确定至少一个第一浏览器,所述第一浏览器至少支持所述至少一个系统依赖对象;第二确定模块43,被配置为确定所述网站支持所述至少一个第一浏览器。

在一可选实现方式中,所述获取模块具体被配置为:第一获取单元,被配置为获取所述网站对应的各资源对象;第一确定单元,被配置为针对所述第一获取单元获得的各资源对象中任一所述资源对象,若预先设置的各系统依赖对象中包括所述资源对象,确定所述资源对象为所述网站对应的系统依赖对象。

在一可选实现方式中,所述第一确定模块具体被配置为:设置单元,被配置为针对所述网站对应的每一系统依赖对象,基于各浏览器分别支持的各系统依赖对象,为支持所述系统依赖对象的浏览器设置第一标识,为不支持所述系统依赖对象的至少一个浏览器设置第二标识;第二确定单元,被配置为将设置有与所述至少一个系统依赖对象相同数目个所述第一标识的浏览器,确定为所述第一浏览器。

在一可选实现方式中,所述第一确定模块具体被配置为:第三确定单元,被配置为针对所述网站对应每一所述系统依赖对象,基于各浏览器分别支持的各系统依赖对象,确定支持所述网站对应的系统依赖对象的至少一个浏览器;第四确定单元,被配置为将支持各所述网站对应的系统依赖对象的浏览器,确定为所述第一浏览器。

在一可选实现方式中,检测网站支持的浏览器的装置还包括第三确定模块,被配置为基于各浏览器分别支持的各系统依赖对象以及所述至少一个系统依赖对象,确定至少一个第二浏览器,所述第二浏览器不支持所述至少一个系统依赖对象中的一个或多个目标系统依赖对象。

在一可选实现方式中,检测网站支持的浏览器的装置还包括:展示模块,被配置为展示各所述第二浏览器对应的自身不支持的所述目标系统依赖对象。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图5是根据一示例性实施例示出的一种用于电子设备11的框图。

如图5所示,电子设备11包括但不限于:处理器501、存储器502、网络接口503、I/O控制器504、通信总线505以及显示屏506。

需要说明的是,本领域技术人员可以理解,图5中示出的电子设备的结构并不构成对电子设备的限定,电子设备可以包括比图5所示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图5对电子设备11的各个构成部件进行具体的介绍:

处理器501是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器501可包括一个或多个处理单元;可选的,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。

处理器501可能是一个中央处理器(Central Processing Unit,CPU),或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;

存储器502可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM)5021和只读存储器(Read-Only Memory,ROM)5022,也可能还包括大容量存储设备5023,例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。

其中,上述的存储器502,用于存储上述处理器501可执行指令。上述处理器501被配置为执行上述检测网站支持的浏览器的方法包含的步骤。

一个有线或无线网络接口503被配置为将电子设备11连接到网络。

处理器501、存储器502、网络接口503、I/O控制器504、显示屏506可以通过通信总线505相互连接,该通信总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。

显示屏506用于显示显示界面,例如,显示如图3所示的展示界面等。显示屏506包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dotlight emitting diodes,QLED)等。在一些实施例中,电子设备11可以包括1个或N个显示屏506,N为大于1的正整数。

在示例性实施例中,电子设备11可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述电子资源传输方法。

该电子设备11所包括处理器501具有以下功能:获取所述网站对应的至少一个系统依赖对象,所述网站在支持所述至少一个系统依赖对象的浏览器上呈现的网页具有预设显示效果;基于各浏览器分别支持的各系统依赖对象以及所述至少一个系统依赖对象,确定至少一个第一浏览器,所述第一浏览器至少支持所述至少一个系统依赖对象;确定所述网站支持所述至少一个第一浏览器。

在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器502,上述指令可由电子设备11的处理器501执行以完成上述方法。可选地,计算机可读存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

在示例性实施例中,还提供了一种计算机程序产品,可加载到计算机的内部存储器,例如上述存储器502中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述检测网站支持的浏览器的方法任一实施例所示方法。

在示例性实施例中,还提供了一种一种计算机程序/指令,所述计算机程序/指令被电子设备包含的处理器执行时实现如上述所述检测网站支持的浏览器的方法。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视

为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

相关技术
  • 检测网站支持的浏览器的方法、装置、设备及存储介质
  • 网站反爬机制自动化检测方法、装置、设备及存储介质
技术分类

06120112880967