CN113661694A - 网页复制 - Google Patents

网页复制 Download PDF

Info

Publication number
CN113661694A
CN113661694A CN201980095240.5A CN201980095240A CN113661694A CN 113661694 A CN113661694 A CN 113661694A CN 201980095240 A CN201980095240 A CN 201980095240A CN 113661694 A CN113661694 A CN 113661694A
Authority
CN
China
Prior art keywords
web page
browser
server
displayed
rendered
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.)
Pending
Application number
CN201980095240.5A
Other languages
English (en)
Inventor
欧宇然
姚鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN113661694A publication Critical patent/CN113661694A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/15Synchronised browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04842Selection of displayed objects or displayed text elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1415Digital output to display device ; Cooperation and interconnection of the display device with other functional units with means for detecting differences between the image stored in the host and the images displayed on the displays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents

Abstract

当用户与由设备上的浏览器渲染和显示的网页应用程序交互时,与用户交互相关联的网页的改变可能不会在与用户的浏览器和设备不同的浏览器和/或设备上以相同的或以其他方式适当地渲染和显示。因此,在网页应用程序的前端开发和测试期间,确保网络内容在不同的浏览器和/或设备上的兼容性非常重要。系统和方法检测影响由设备上的浏览器渲染的网页的改变,并且在由不同浏览器和/或设备渲染和显示的网页副本中同步地或异步地复制检测到的改变。

Description

网页复制
技术领域
本文描述的各方面总体上涉及网络开发。更具体地,本文描述的各方面提供了用于跨浏览器和/或设备的网络内容兼容性的系统和方法。
背景技术
网络浏览器是一种允许用户在万维网上查找和查看网站的软件。网络浏览器可以提供用于查看和导航网站的用户界面(UI)。网络浏览器的一些实例包括谷歌浏览器、IE浏览器、Safari浏览器、ME浏览器和火狐浏览器。网站可以包括一个或多个网页。网页(webpage或webpage)是通常以HTML(超文本标记语言)编写的文档。除了html之外,网页还可以包括对资源的引用,诸如图像、级联样式表(CSS)和脚本,诸如JavaScript。网站及其网页可以托管在诸如网络服务器的服务器上。当在网络浏览器内访问网页时,从网络服务器请求网页的html和/或资源。在浏览器中访问网页可以包括指定浏览器中的URL、点击链接或刷新所显示的网页。网络服务器可以通过为网页提供所请求的html和/或资源来响应该请求。
浏览器引擎(也称为渲染引擎或布局引擎)是网络浏览器的部件,其将html文档和网页的其他资源转换成浏览器用户界面(UI)内的可视表示。当浏览器接收到html文档时,浏览器引擎解析html文档并为网页构建或构造DOM(文档对象模型)。DOM是html文档的面向对象表示。DOM充当到html文档的界面。诸如JavaScript的程序和脚本可以通过与网页的DOM接口来动态地访问和更新网页文档的内容、结构和样式。浏览器还可以响应于浏览器事件来修改或更新网页的DOM。浏览器事件可以与用户动作相关联,诸如点击链接、鼠标和指针移动、键盘输入或用户在网络浏览器中与网页交互的任何其他动作。
发明内容
下文呈现本文中描述的各个方面的简要概述。本发明内容不是广泛的概述,并且不旨在确定所需的或关键的要素或描绘权利要求的范围。以下概述仅以简化形式呈现一些概念,作为以下提供的更详细描述的介绍性序言。
所公开的主题涉及一种计算机实现的方法,该方法包括接收由在第一计算设备上运行的第一浏览器请求的网页。该方法可以包括将接收到的网页作为第一网页提供给在第一计算设备上运行的第一浏览器。第一网页可以由第一浏览器渲染和显示。该方法还可以包括通过复制接收到的网页来生成第二网页。该方法包括将第二网页提供给在第二计算设备上运行的第二浏览器。所提供的第二网页可以由第二浏览器渲染和显示。该方法还包括监测由第一浏览器渲染和显示的第一网页的影响第一网页的至少一个改变。该方法还包括基于检测到影响由第一浏览器渲染和显示的第一网页的至少一个改变,在由第二浏览器渲染和显示的第二网页中复制检测到的影响第一网页的至少一个改变。
所公开的主题还涉及一种系统,其包括一个或多个处理器和存储计算机可读指令的存储器。计算机可读指令在由一个或多个处理器执行时可以配置一个或多个处理器以接收由在第一计算设备上运行的第一浏览器请求的网页。计算机可读指令在由一个或多个处理器执行时可以配置一个或多个处理器以将接收到的网页作为第一网页提供给在第一计算设备上运行的第一浏览器。第一网页可以由第一浏览器渲染和显示。指令还可以配置一个或多个处理器以通过复制接收到的网页来生成第二网页。指令可以配置一个或多个处理器以将第二网页提供给在第二计算设备上运行的第二浏览器。所提供的第二网页可以由第二浏览器渲染和显示。指令可以配置一个或多个处理器以监测由第一浏览器渲染和显示的第一网页的影响第一网页的至少一个改变。指令还可以配置一个或多个处理器以基于检测到影响由第一浏览器渲染和显示的第一网页的至少一个改变,在由第二浏览器渲染和显示的第二网页中复制检测到的影响第一网页的至少一个改变。
所公开的主题还涉及一种包括存储在其中的指令的机器可读介质,指令在由机器执行时使得机器执行包括以下的操作:接收由在第一计算设备上运行的第一浏览器请求的网页。该操作可以包括将接收到的网页作为第一网页提供给在第一计算设备上运行的第一浏览器。第一网页可以由第一浏览器渲染和显示。该操作还可以包括通过复制接收到的网页来生成第二网页。该操作包括将第二网页提供给在第二计算设备上运行的第二浏览器。所提供的第二网页可以由第二浏览器渲染和显示。该操作还包括监测由第一浏览器渲染和显示的第一网页的影响第一网页的至少一个改变。该操作还包括基于检测到影响由第一浏览器渲染和显示的第一网页的至少一个改变,在由第二浏览器渲染和显示的第二网页中复制检测到的影响第一网页的至少一个改变。
受益于以下进一步详细讨论的公开内容,这些和附加的方面将得到理解。
附图说明
通过参考考虑附图的以下描述,可以获得对本文中描述的各方面及其优点的更完整的理解,在附图中,相同的附图标记指示相同的特征,并且其中:
图1描绘了可以根据本文描述的一个或多个示例性方面使用的示例性计算机系统架构。
图2描绘了可以根据本文描述的一个或多个示例性方面使用的示例性远程访问系统架构。
图3描绘了可以根据本文描述的一个或多个示例性方面使用的示例性虚拟化系统架构。
图4图示了根据本文描述的一个或多个示例性方面的用于网页开发的示例环境。
图5图示了由图4的示例实施例执行的用于网页开发的示例过程。
图6图示了由图4的示例实施例执行的用于网页复制的示例过程。
图7图示了根据本文描述的一个或多个示例性方面的用于网页开发的另一示例性环境。
图8图示了根据本文描述的一个或多个示例性方面的用于网页开发的另一示例性环境。
图9图示了根据本文描述的一个或多个示例性方面的提供网页开发服务的另一示例性环境。
具体实施方式
在各种实施例的以下描述中,参考上文标识且形成其一部分的附图,并且其中通过图示的方式示出了其中可以实践本文中描述的各方面的各种实施例。应理解,在不脱离本文中描述的范围的情况下,可以利用其他实施例,并且可以进行结构和功能修改。各个方面能够是其他实施例并且能够以各种不同的方式实践或执行。
相同的网页内容可能不会在不同的浏览器和/或设备上以相同或相近的方式渲染和显示。这可能是由于不同设备的视口、CPU和其他因素存在差异,或者是由于不同浏览器的渲染引擎和渲染能力不同。例如,渲染引擎和规则之间的差异可能会导致网页中的某些字体在不同浏览器之间显示不同或不一致。网页或网站在不同用户环境中渲染和显示的不一致性可能会对整个用户体验产生负面影响。另外,鼓励网络开发人员通过在网页和网站中提供诸如实时聊天、弹出窗口和帮助屏幕等交互式功能来创建吸引人的用户体验。然而,渲染引擎和/或设备硬件中的差异可能会导致网站在某些浏览器和/或设备上无法正常运行。在网络开发期间识别跨浏览器和跨设备的兼容性问题使网络开发人员能够更好地确定在网站中包括哪些交互式功能。
如上所述,识别在不同浏览器和/或设备上渲染网站的不一致性是网络开发的一个重要方面。本文描述的系统、方法和设备在不同的浏览器和/或设备上复制用户与网页的交互。根据示例系统和方法,主网页可以由在主设备上执行的主浏览器渲染和显示。该网页也可以作为第二个网页(称为副本网页)在一个或多个浏览器(称为副本浏览器)上渲染和显示,这些浏览器分别在彼此不同的一个或多个客户端设备(称为副本设备)上执行。一个或多个副本浏览器可能彼此不同。主浏览器可以监测主网页以查看主网页的改变。这些改变可能与用户在主浏览器中与主网页的交互相关联。用户交互可以包括与主浏览器中渲染和显示的网页相关的任何用户动作,诸如点击链接、鼠标和指针移动、键盘输入或用户在网络浏览器中与网页交互的任何其他动作。在一些实施例中,检测与在主浏览器中渲染和显示的主网页的用户交互相关联的改变可以包括检测对主网页的DOM的一个或多个改变。基于检测用户与在主浏览器中渲染和显示的主网页的交互,示例系统和方法在每个副本浏览器中渲染和显示的副本网页中复制或重复检测到的用户交互。在一些实施例中,实时地在副本浏览器同时复制或拷贝检测到的用户交互。通过根据检测到的对主网页的DOM的改变来修改或更新副本网页的DOM表示,可以在副本网页中复制或拷贝与主网页相关联的用户交互。以这种方式,在多个浏览器和/或设备上复制或拷贝与主浏览器中的主网页的用户交互,并且在网络开发期间可以有效地检测和识别副本网页中的用户交互在多个浏览器和/或设备上的渲染中的任何不一致性。在网络开发期间识别交互式网站和网络应用程序的不一致渲染使网络开发人员能够改进网站或网络应用程序的用户体验。
在一些实施例中,检测到的对与用户交互相关联的主网页的改变可以存储在数据库中。副本设备可以连接到数据库。所存储的用户交互可以在副本浏览器上传播。副本浏览器可以在由副本浏览器渲染和显示的相应网页中复制或拷贝与所存储的用户交互相关联的改变。
应当理解,本文中使用的措辞和术语是为了描述的目的,不应被视为限制性的。相反,本文中使用的短语和术语被赋予其最广泛的解释和含义。“包括(including)”和“包括(comprising)”及其变体的使用意在涵盖其后列出的项目及其等同物以及附加项目和其等同物。术语“连接”、“耦合”和类似术语的使用意在包括直接和间接连接和耦合。
计算架构
计算机软件、硬件和网络可以用在各种不同的系统环境中,包括独立环境、联网环境、远程访问环境(也称为远程桌面)、虚拟化环境和/或基于云的环境等。图1图示了可用于在独立环境和/或联网环境中实现本文描述的一个或多个示例性方面的系统架构和数据处理设备的一个实例。各种网络节点103、105、107和109可以经由诸如因特网的广域网(WAN)101互连。也可以或替代地使用其他网络,包括专用内联网、公司网络、局域网(LAN)、城域网(MAN)、无线网络、个人网络(PAN)等。网络101用于图示的目的,并且可以用更少或更多计算机网络代替。局域网133可以具有任何已知的LAN拓扑中的一种或多种,并且可以使用各种不同的协议中的一种或多种,诸如以太网。设备103、105、107和109以及其他设备(未示出)可以经由双绞线、同轴电缆、光纤、无线电波或其他通信介质连接到网络中的一个或多个。
本文中使用并在附图中描绘的术语“网络”不仅指其中远程存储设备经由一个或多个通信路径耦合在一起的系统,而且指可以不时耦合到具有存储能力的此类系统的独立设备。因此,术语“网络”不仅包括“物理网络”,还包括“内容网络”,其由归属于驻留在所有物理网络上的单个实体的数据组成。
这些部件可以包括数据服务器103、网络服务器105和客户端计算机107、109。数据服务器103提供对数据库和控制软件的总体访问、控制和管理,用于执行本文描述的一个或多个示例性方面。数据服务器103可以连接到网络服务器105,用户通过该网络服务器与所请求的数据进行交互并获取所请求的数据。替代地,数据服务器103充当网络服务器本身,并且直接连接到因特网。数据服务器103可以通过局域网133、广域网101(例如,因特网),经由直接或间接连接,或经由某个其他网络连接到网络服务器105。用户可以使用远程计算机107、109与数据服务器103交互,例如,使用网络浏览器经由网络服务器105所托管的一个或多个外部公开的网站连接到数据服务器103。客户端计算机107、109可以与数据服务器103协同使用以访问存储在其中的数据,或者可以用于其他目的。例如,用户可以从客户端设备107使用本领域中已知的因特网浏览器,或者通过执行通过计算机网络(诸如因特网)与网络服务器105和/或数据服务器103通信的软件应用程序来访问网络服务器105。
服务器和应用程序可以组合在相同的物理机器上,并保留单独的虚拟或逻辑地址,或者可以驻留在单独的物理机器上。图1仅图示了可以使用的网络架构的一个实例,并且本领域技术人员将理解,所使用的具体网络架构和数据处理设备可以有所不同,而且对于它们所提供的功能来说是次要的,如本文进一步描述的。例如,由网络服务器105和数据服务器103提供的服务可以组合在单个服务器上。
每个部件103、105、107、109可以是任何类型的已知计算机、服务器或数据处理设备。例如,数据服务器103可以包括控制数据服务器103的整体操作的处理器111。数据服务器103还可以包括随机存取存储器(RAM)113、只读存储器(ROM)115、网络接口117、输入/输出接口119(例如,键盘、鼠标、显示器、打印机等)和存储器121。输入/输出(I/O)119可以包括用于读取、写入、显示和/或打印数据或文件的各种接口单元和驱动器。存储器121还可以存储用于控制数据处理设备103的整体操作的操作系统软件123、用于指示数据服务器103执行本文描述的各方面的控制逻辑125,以及提供可以或不可以结合本文描述的方面使用的辅助、支持和/或其他功能的其他应用程序软件127。控制逻辑125在本文中也可以被称为数据服务器软件125。数据服务器软件125的功能可以指基于编码到控制逻辑125中的规则自动做出的操作或决定、由将输入提供到系统中的用户手动做出的操作或决定,和/或基于用户输入(例如,查询、数据更新等)的自动处理的组合。
存储器121还可以存储用于执行本文描述的一个或多个方面的数据,包括第一数据库129和第二数据库131。在一些实施例中,第一数据库129可以包括第二数据库131(例如,作为单独的表格、报告等)。即,根据系统设计,信息可以存储在单个数据库中,或分离成不同的逻辑数据库、虚拟数据库或物理数据库。设备105、107和109可以具有与关于设备103所描述的相似或不同的架构。本领域技术人员将理解,本文描述的数据处理设备103(或设备105、107或109)的功能可以跨多个数据处理设备分布,以例如跨多个计算机分布处理负载,从而基于地理位置、用户访问级别、服务质量(QoS)等来隔离交易。
一个或多个方面可以体现在计算机可用或可读的数据和/或计算机可执行指令中,诸如体现在由一个或多个计算机或本文描述的其他设备执行的一个或多个程序模块中。一般而言,程序模块包括例程、程序、对象、部件、数据结构等,其在由计算机或其他设备中的处理器执行时执行特定任务或实现特定抽象数据类型。模块可以用随后被编译用于执行的源代码编程语言来编写,或者可以用诸如(但不限于)超文本标记语言(HTML)或可扩展标记语言(XML)的脚本语言来编写。计算机可执行指令可以存储在诸如非易失性存储设备的计算机可读介质上。可以使用任何合适的计算机可读存储介质,包括硬盘、CD-ROM、光存储设备、磁存储设备和/或其任何组合。另外,表示本文描述的数据或事件的各种传输(非存储)介质可以以穿过诸如金属线、光纤和/或无线传输介质(例如,空气和/或空间)的信号传导介质传播的电磁波的形式在源和目的地之间传送。本文中描述的各个方面可以实现为方法、数据处理系统或计算机程序产品。因此,各种功能可整体或部分地体现在软件、固件和/或硬件或硬件等效物(诸如集成电路、现场可编程门阵列(FPGA)等)中。特定数据结构可用于更有效地实现本文描述的一个或多个方面,且此类数据结构预期在本文描述的计算机可执行指令和计算机可用数据的范围内。
进一步参考图2,本文描述的一个或多个方面可以在远程存取环境中实现。图2描绘了示例系统架构,其包括可以根据本文描述的一个或多个示例性方面使用的示例性计算环境200中的计算设备201。计算设备201可以用作单服务器或多服务器桌面虚拟化系统(例如,远程存取或云系统)中的服务器206a,并且可经配置以为客户端访问设备提供虚拟机。计算设备201可以具有用于控制设备201及其相关联部件的整体操作的处理器203,包括RAM205、ROM 207、输入/输出(I/O)模块209和存储器215。
I/O模块209可以包括计算设备201的用户可以通过其提供输入的鼠标、小键盘、触摸屏、扫描仪、光学读取器和/或指示笔(或其他输入设备),并且还可以包括用于提供音频输出的一个或多个扬声器以及用于提供文本、视听和/或图形输出的一个或多个视频显示设备。软件可以存储在存储器215和/或其他存储设备内以向处理器203提供指令,用于将计算设备201配置成专用计算设备,以便执行本文描述的各种功能。例如,存储器215可以存储由计算设备201使用的软件,诸如操作系统217、应用程序219和相关联的数据库221。
计算设备201可以在支持连接到诸如终端240(也称为客户端设备和/或客户端机器)的一台或多台远程计算机的联网环境中操作。终端240可以是包括以上关于计算设备103或201描述的多个或全部元件的个人计算机、移动设备、膝上型计算机、平板计算机或服务器。图2所描绘的网络连接包括局域网(LAN)225和广域网(WAN)229,但也可以包括其他网络。当在LAN联网环境中使用时,计算设备201可以通过网络接口或适配器223连接到LAN225。当在WAN联网环境中使用时,计算设备201可以包括调制解调器或其他广域网接口227,用于在诸如计算机网络230(例如,因特网)等的WAN 229上建立通信。应当理解,所示的网络连接是示例性的,并且可以使用其他方式在计算机之间建立通信链路。计算设备201和/或终端240还可以是包括诸如电池、扬声器和天线(未示出)等各种其他部件的移动终端(例如,移动电话、智能手机、个人数字助理(PDA)、笔记本等)。
本文描述的各方面还可以与众多其他通用或专用计算系统环境或配置一起操作。可适用于本文描述的各方面的其他计算系统、环境和/或配置的实例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人计算机(PC)、小型计算机、大型计算机、包括任何上述系统或设备的分布式计算环境等。
如图2所示,一个或多个客户端设备240可以与一个或多个服务器206a-206n(本文中通常称为“服务器206”)通信。在一个实施例中,计算环境200可以包括安装在服务器206与客户端机器240之间的网络设备。网络设备可以管理客户端/服务器连接,并且在一些情况下可以在多个后端服务器206之间对客户端连接进行负载平衡。
在一些实施例中,客户端机器240可以被称为单个客户端机器240或单组客户端机器240,而服务器206可以被称为单个服务器206或单组服务器206。在一个实施例中,单个客户端机器240与多于一个服务器206通信,而在另一实施例中,单个服务器206与多于一个客户端机器240通信。在又一实施例中,单个客户端机器240与单个服务器206通信。
在一些实施例中,客户端机器240可以由以下非穷举性术语中的任一个来引用:客户端机器;客户端;客户端计算机;客户端设备;客户端计算设备;本地机器;远程机器;客户端节点;终点;或端点节点。在一些实施例中,服务器206可以由以下非穷举性术语中的任何一个来引用:服务器、本地机器;远程机器;服务器群或主机计算设备。
在一个实施例中,客户端机器240可以是虚拟机。虚拟机可以是任何虚拟机,而在一些实施例中,虚拟机可以是由类型1或类型2管理程序管理的任何虚拟机,例如由思杰系统公司(Citrix Systems)、美国国际商用机器公司(IBM)、威睿(VMware)开发的管理程序或任何其他管理程序。在一些方面中,虚拟机可以由管理程序管理,而在其他方面中,虚拟机可以由在服务器206上执行的管理程序或在客户端240上执行的管理程序管理。
一些实施例包括客户端设备240,其显示由在服务器206或其他远程定位的机器上远程执行的应用程序生成的应用程序输出。在这些实施例中,客户端设备240可以执行虚拟机接收器程序或应用程序以在应用程序窗口、浏览器或其他输出窗口中显示输出。在一个实例中,应用程序是桌面,而在其他实例中,应用程序是生成或呈现桌面的应用程序。桌面可以包括为其中可集成本地和/或远程应用程序的操作系统的实例提供用户界面的图形外壳。本文中使用的应用程序是在操作系统(并且可选地,还有桌面)的实例已经被加载之后执行的程序。
在一些实施例中,服务器206使用远程呈现协议或其他程序来将数据发送到在客户端上执行的瘦客户端或远程显示应用程序,以呈现由在服务器206上执行的应用程序生成的显示输出。瘦客户端或远程显示协议可以是以下非穷举性协议列表中的任何一个:佛罗里达州劳德代尔堡的思杰系统公司(Citrix Systems,Inc.)开发的独立计算架构(ICA)协议;或由华盛顿州雷德蒙市的微软公司(Microsoft Corporation)制造的远程桌面协议(RDP)。
远程计算环境可以包括多于一个服务器206a-206n,使得服务器206a-206n例如在云计算环境中在逻辑上一起分组到服务器群206中。服务器群206可以包括地理上分散但在逻辑上分组在一起的服务器206,或在逻辑上分组在一起时彼此邻近定位的服务器206。在一些实施例中,服务器群206内的地理上分散的服务器206a-206n可以使用WAN(广域)、MAN(城域)或LAN(局域)进行通信,其中不同地理区域可以被表征为:不同的大陆;大陆的不同区域;不同的国家;不同的州;不同的城市;不同的校园;不同的房间;或上述地理位置的任何组合。在一些实施例中,服务器群206可以作为单个实体来管理,而在其他实施例中,服务器群206可以包括多个服务器群。
在一些实施例中,服务器群可以包括执行基本上类似类型的操作系统平台(例如,WINDOWS、UNIX、LINUX、iOS、ANDROID、SYMBIAN等)的服务器206。在其他实施例中,服务器群206可以包括执行第一类型操作系统平台的一个或多个服务器的第一组,以及执行第二类型操作系统平台的一个或多个服务器的第二组。
服务器206可以根据需要经配置为任何类型的服务器,例如文件服务器、应用程序服务器、网络服务器、代理服务器、电器、网络电器、网关、应用程序网关、网关服务器、虚拟化服务器、部署服务器、安全套接字层(SSL)VPN服务器、防火墙、web服务器、应用程序服务器,或者经配置为主应用程序服务器、执行活动目录的服务器或执行提供防火墙功能、应用程序功能或负载平衡功能的应用程序加速程序的服务器。也可以使用其他服务器类型。
一些实施例包括第一服务器206a,其接收来自客户端机器240的请求、将该请求转发到第二服务器206b(未示出),并用来自第二服务器206b(未示出)的响应来响应由客户端机器240生成的请求。第一服务器206a可以获取可用于客户端机器240的应用程序的枚举以及与托管应用程序的枚举内识别的应用程序的应用程序服务器206相关联的地址信息。然后,第一服务器206a可以使用网络接口呈现对客户请求的响应,并且直接与客户端240通信以向客户端240提供对识别的应用程序的访问。一个或多个客户端240和/或一个或多个服务器206可以通过网络230(例如,网络101)传输数据。
图3示出了示例性桌面虚拟化系统的高级架构。如图所示,桌面虚拟化系统可以是单服务器或多服务器系统,或者云系统,其包括经配置以向一个或多个客户端访问设备240提供虚拟桌面和/或虚拟应用程序的至少一个虚拟化服务器301。如本文中使用的,桌面是指其中可以托管和/或执行一个或多个应用程序的图形环境或空间。桌面可以包括为其中可集成本地和/或远程应用程序的操作系统的实例提供用户界面的图形外壳。应用程序可以包括在操作系统(并且可选地,还有桌面)的实例被加载之后执行的程序。操作系统的每个实例可以是物理的(例如,每个设备一个操作系统)或虚拟的(例如,在单个设备上运行的OS的多个实例)。每个应用程序可以在本地设备上执行,也可以在位于远程的设备(例如,远程的)上执行。
计算机设备可经配置为虚拟化环境(例如,单服务器、多服务器或云计算环境)中的虚拟化服务器。图3所示的虚拟化服务器301可以部署为和/或由图2所示的服务器206的一个或多个实施例或由其他已知计算设备实现。在虚拟化服务器301中包括硬件层,其可以包括一个或多个物理磁盘304、一个或多个物理设备306、一个或多个物理处理器308以及一个或多个物理存储器316。在一些实施例中,固件312可以存储在物理存储器316中的存储器元件内,并且可以由物理处理器308中的一个或多个执行。虚拟化服务器301还可以包括操作系统314,其可以存储在物理存储器316中的存储器元件中,并且由物理处理器308中的一个或多个执行。此外,管理程序302可以存储在物理存储器316中的存储元件中,并且可以由物理处理器308中的一个或多个执行。
在物理处理器308中的一个或多个上执行的可以是一个或多个虚拟机332A-C(统称为332)。每个虚拟机332可以具有虚拟磁盘326A-C和虚拟处理器328A-C。在一些实施例中,第一虚拟机332A可以使用虚拟处理器328A来执行包括工具栈324的控制程序320。控制程序320可以被称为控制虚拟机、Dom0、Domain 0或用于系统管理和/或控制的其他虚拟机。在一些实施例中,一个或多个虚拟机332B-C可以使用虚拟处理器328B-C来执行客户操作系统330A-B。
虚拟化服务器301可以包括具有与虚拟化服务器301通信的一个或多个硬件的硬件层310。在一些实施例中,硬件层310可以包括一个或多个物理磁盘304、一个或多个物理设备306、一个或多个物理处理器308以及一个或多个物理存储器316。物理部件304、306、308和316可以包括例如上述部件中的任一个。物理设备306可以包括例如网络接口卡、视频卡、键盘、鼠标、输入设备、监视器、显示设备、扬声器、光驱、存储设备、通用串行总线连接、打印机、扫描仪、网络元件(例如,路由器、防火墙、网络地址转换器、负载平衡器、虚拟专用网络(VPN)网关、动态主机配置协议(DHCP)路由器等),或连接到虚拟化服务器301或与其通信的任何设备。硬件层310中的物理存储器316可以包括任何类型的存储器。物理存储器316可以存储数据,并且在一些实施例中可以存储一个或多个程序或一组可执行指令。图3图示了其中固件312存储在虚拟化服务器301的物理存储器316内的实施例。存储在物理存储器316中的程序或可执行指令可以由虚拟化服务器301的一个或多个处理器308执行。
虚拟化服务器301还可以包括管理程序302。在一些实施例中,管理程序302可以是由虚拟化服务器301上的处理器308执行以创建和管理任何数量的虚拟机332的程序。管理程序302可以被称为虚拟机监视器或平台虚拟化软件。在一些实施例中,管理程序302可以是监测在计算机器上执行的虚拟机的可执行指令和硬件的任何组合。管理程序302可以是类型2管理程序,其中管理程序在虚拟化服务器301上执行的操作系统314内执行。然后,虚拟机可以在高于管理程序302的级别上执行。在一些实施例中,类型2管理程序可以在用户的操作系统的上下文中执行,使得类型2管理程序与用户的操作系统交互。在其他实施例中,虚拟化环境中的一个或多个虚拟化服务器301可以替代地包括类型1管理程序(未示出)。类型1管理程序可以通过直接访问硬件层310内的硬件和资源而在虚拟化服务器301上执行。即,当类型2管理程序302通过主机操作系统314访问系统资源时,如图所示,类型1管理程序可以直接访问所有系统资源而无需主机操作系统314。类型1管理程序可以直接在虚拟化服务器301的一个或多个物理处理器308上执行,并且可以包括存储在物理存储器316中的程序数据。
在一些实施例中,管理程序302可以以模拟具有对系统资源的直接访问的操作系统330或控制程序320的任何方式向在虚拟机332上执行的操作系统330或控制程序320提供虚拟资源。系统资源可以包括但不限于物理设备306、物理磁盘304、物理处理器308、物理存储器316以及包括在虚拟化服务器301的硬件层310中的任何其他部件。管理程序302可用于仿真虚拟硬件、分区物理硬件、虚拟化物理硬件和/或执行提供对计算环境的访问的虚拟机。在又一些实施例中,管理程序302可以控制在虚拟化服务器301上执行的虚拟机332的处理器调度和存储器分区。管理程序302可以包括由加利福尼亚州帕洛阿尔托市的威睿公司(VMWare,Inc.)制造的管理程序;XENPROJECT管理程序,其是由开源XenProject.org社区监督开发的开源产品;由微软提供的HyperV、VirtualServer或虚拟PC管理程序,或其他管理程序。在一些实施例中,虚拟化服务器301可以执行管理程序302,该管理程序创建可以在其上执行客户操作系统的虚拟机平台。在这些实施例中,虚拟化服务器301可以被称为主机服务器。这种虚拟化服务器的一个实例是由佛罗里达州劳德代尔堡的思杰系统公司提供的思杰管理程序。
管理程序302可以创建客户操作系统330在其中执行的一个或多个虚拟机332B-C(统称为332)。在一些实施例中,管理程序302可以加载虚拟机图像以创建虚拟机332。在其他实施例中,管理程序302可以执行虚拟机332内的客户操作系统330。在又一些实施例中,虚拟机332可以执行客户操作系统330。
除了创建虚拟机332之外,管理程序302还可以控制至少一个虚拟机332的执行。在其他实施例中,管理程序302可以呈现具有由虚拟化服务器301提供的至少一个硬件资源(例如,硬件层310内可用的任何硬件资源)的抽象的至少一个虚拟机332。在其他实施例中,管理程序302可以控制虚拟机332访问虚拟化服务器301中可用的物理处理器308的方式。控制对物理处理器308的访问可以包括确定虚拟机332是否应当访问处理器308,以及物理处理器能力如何呈现给虚拟机332。
如图3所示,虚拟化服务器301可以托管或执行一个或多个虚拟机332。虚拟机332是一组可执行指令,其在由处理器308执行时可以模仿物理计算机的操作,使得虚拟机332可以像物理计算设备一样执行程序和过程。虽然图3图示了其中虚拟化服务器301托管三个虚拟机332的实施例,但是在其他实施例中,虚拟化服务器301可以托管任何数量的虚拟机332。在一些实施例中,管理程序302可以向每个虚拟机332提供该虚拟机332可用的物理硬件、存储器、处理器和其他系统资源的唯一虚拟视图。在一些实施例中,唯一虚拟视图可以基于以下中的一项或多项:虚拟机权限、策略引擎对一个或多个虚拟机标识符的应用、访问虚拟机的用户、在虚拟机上执行的应用程序、虚拟机访问的网络或任何其他所需标准。例如,管理程序302可以创建一个或多个不安全虚拟机332和一个或多个安全虚拟机332。可以防止不安全虚拟机332访问可以允许安全虚拟机332访问的资源、硬件、存储器位置和程序。在其他实施例中,管理程序302可以向每个虚拟机332提供虚拟机332可用的物理硬件、存储器、处理器和其他系统资源的基本相似的虚拟视图。
每个虚拟机332可以包括虚拟磁盘326A-C(统称为326)和虚拟处理器328A-C(统称为328)。在一些实施例中,虚拟磁盘326是虚拟化服务器301的一个或多个物理磁盘304或虚拟化服务器301的一个或多个物理磁盘304的一部分的虚拟化视图。物理磁盘304的虚拟化视图可以由管理程序302生成、提供和管理。在一些实施例中,管理程序302向每个虚拟机332提供物理磁盘304的唯一视图。因此,在这些实施例中,当与其他虚拟磁盘326相比时,每个虚拟机332中包括的特定虚拟磁盘326可以是唯一的。
虚拟处理器328可以是虚拟化服务器301的一个或多个物理处理器308的虚拟化视图。在一些实施例中,物理处理器308的虚拟化视图可以由管理程序302生成、提供和管理。在一些实施例中,虚拟处理器328具有至少一个物理处理器308的基本上所有相同的特性。在其他实施例中,虚拟处理器308提供物理处理器308的修改视图,使得虚拟处理器328的特性中的至少一些不同于对应的物理处理器308的特性。
网页复制
图4图示了根据本文描述的一个或多个示例性方面的用于网页开发的示例环境。环境400包括第一设备405、第二设备410和第三设备415。在一些实施例中,第一设备405、第二设备410和第三设备415可以分别是图2所示的计算设备210。环境400还包括诸如代理服务器420的第一服务器、诸如复制服务器425的第二服务器,以及诸如网络服务器430的第三服务器。在一些实施例中,代理服务器420、复制服务器425和网络服务器430可以分别是图2所示的服务器206。在一些实施例中,
第一浏览器440在第一设备405上执行。第一浏览器440包括第一浏览器引擎442。第一浏览器440的用户435可以从第一浏览器440访问网页。基于用户435访问网页,第一浏览器440可以经由代理服务器420从网络服务器430请求访问的网页。网络服务器430可以通过向代理服务器420提供所请求的网页来响应对网页的请求。代理服务器420可以接收由网络服务器430提供的网页。网页可以是任何类型的网页,包括静态网页或网络应用程序。
代理服务器420可以将接收到的网页作为第一网页提供给第一浏览器440。在第一浏览器440从代理服务器420接收到第一网页之后,第一浏览器440可以为第一设备405的用户435渲染和显示第一网页。网页,诸如由第一浏览器440的用户435访问的网页,可以在不同的浏览器和设备上不同地渲染和显示。因此,除了将从网络服务器430接收的网页作为第一网页提供给第一浏览器440之外,还可以将该网页作为第二网页提供给第二浏览器445和第三浏览器450。在一些实施例中,代理服务器420可以从网络服务器430接收网页并将网页提供给复制服务器425。在一些实施例中,代理服务器420可以向复制服务器425提供从网络服务器430接收的网页的html和/或资源的副本。在复制服务器425从代理服务器420接收到网页之后,复制服务器425可以将接收到的网页作为复制的网页提供给在第二设备410上执行的第二浏览器445和在第三设备415上执行的第三浏览器450。第二浏览器445和第三浏览器450可以各自渲染和显示复制的网页。
在第一浏览器440的用户435访问的网页由第一浏览器440、第二浏览器445和第三浏览器450中的每一个渲染和显示之后,对由第一浏览器440渲染和显示的第一网页的改变可以在由第二浏览器445和第三浏览器450渲染的网页中复制或拷贝。在一些实施例中,对第一网页的改变可以与在第一浏览器440中与第一网页交互的用户435相关联。通过在由第二浏览器445和第三浏览器450渲染和显示的网页中复制或拷贝与第一网页的用户交互,可以在网络开发期间识别跨浏览器和/或设备的网页内容的不一致渲染的实例。虽然图4示出了第二浏览器445和第三浏览器450,但是网页复制可以发生在任何数量的浏览器和/或设备上。
在一些实施例中,在代理服务器420从网络服务器430接收到网页之后,代理服务器420可以在网页中注入或提供脚本,并将注入脚本的网页作为第一网页提供给第一浏览器440。在一些实施例中,注入的脚本可以是JavaScript。当第一浏览器440的第一浏览器引擎渲染第一网页时,注入的脚本执行并且可以配置第一浏览器440以监测第一网页的影响所渲染和显示的第一网页的改变。在一些实施例中,影响第一网页的改变可以与在第一浏览器440中与第一网页交互的用户435相关联。在一些实施例中,注入的脚本可以配置第一浏览器440以监测和检测对由第一浏览器440渲染和显示的第一网页的DOM的改变。脚本还可以配置第一浏览器440以向复制服务器425提供检测到的改变。在一些实施例中,第一浏览器440可以向复制服务器425提供对第一网页的DOM的改变。在一些实施例中,第一浏览器440向复制服务器425提供第一网页的新的或改变的DOM。在接收到对第一网页的改变之后,复制服务器425可以向第二浏览器445和第三浏览器450提供改变。
在一些实施例中,第二浏览器445和第三浏览器450可经配置以从复制服务器425接收对第一网页的改变。如上所述,在复制服务器425从代理服务器420接收到网页之后,复制服务器425可以将接收到的网页作为复制网页提供给第二浏览器445和第三浏览器450。在一些实施例中,复制服务器425可以将复制网页中的脚本包括、注入或提供给第二浏览器445和第三浏览器450。在一些实施例中,注入的脚本可以是JavaScript。注入的脚本可以配置第二浏览器445和第三浏览器450以从复制服务器425接收对第一网页的改变。
注入的脚本还可以配置第二浏览器445和第三浏览器450以复制或拷贝由第二浏览器445和第三浏览器450渲染和显示的网页中的改变。在一些实施例中,在从复制服务器425接收到对第一网页的改变之后,第二浏览器445和第三浏览器450可以基于对第一网页的DOM的改变更新和修改由第二浏览器445和第三浏览器450渲染和显示的网页的相应DOM。在第二浏览器445和第三浏览器450中复制或拷贝对第一网页的改变之后,可以在网络开发期间识别跨第二浏览器445和第三浏览器450和/或设备410和415的网页内容的不一致渲染的实例。
在一些实施例中,复制服务器425和代理服务器425的功能可以由单个服务器提供。图8示出了其中由代理服务器425和复制服务器425提供的功能由单个服务器820提供的示例实施例。在一些实施例中,参考图4描述的网络开发功能可以作为云服务提供,诸如图7中所示的云服务755。在图7中,云服务755与代理服务器420接口。复制服务器425可以经由数据库745连接到第二浏览器445和第三浏览器450。参考图4描述的用户交互可以被记录或存储在数据库745中。第二浏览器445和第三浏览器450可以与自动UI问题检测器750接口。用户交互可以由第二浏览器445和第三浏览器450复制或拷贝。另外,网页内容在第二浏览器445和第三浏览器450和/或设备410和415的不一致渲染的实例可以由连接到第二浏览器445和第三浏览器450的自动UI问题检测器750识别。
图5图示了由图4的示例实施例进行网页开发的示例过程500。过程500可以包括网页复制。虽然参考图4描述了图5,但是应当注意,图5的方法步骤可以由其他系统执行。
当在第一设备405上运行的第一浏览器440的用户435从第一浏览器440访问网页时,第一浏览器440的第一浏览器引擎442向代理服务器420发送对由第一浏览器440的用户435访问的网页的请求(例如,http/https请求)。代理服务器420将对所访问网页的请求转发给网络服务器430。网络服务器430从代理服务器420接收请求。网络服务器430通过向代理服务器420提供网页的html来响应从代理服务器420接收的请求。代理服务器420从网络服务器430接收网页的html。
过程500开始于阶段505,此时代理服务器420接收由第一浏览器440的用户435访问的网页的html。网页可以是任何类型的网页,包括静态网页或网络应用程序。在阶段510,过程500包括将接收到的网页作为第一网页提供给第一浏览器440。代理服务器420可以将接收到的网页作为第一网页提供给第一浏览器440。在第一浏览器440从代理服务器420接收到第一网页之后,第一浏览器440可以为第一设备405的用户435渲染和显示第一网页。
在阶段515,过程500包括将接收到的网页的副本作为第二网页提供给第二浏览器。网页,诸如由第一浏览器440的用户435访问的网页,可以在不同的浏览器和设备上不同地渲染和显示。因此,除了将从网络服务器430接收的网页作为第一网页提供给第一浏览器440之外,还可以将该网页作为第二网页提供给第二浏览器445和第三浏览器450。在一些实施例中,代理服务器420可以从网络服务器430接收网页并将网页提供给复制服务器425。在一些实施例中,代理服务器420可以向复制服务器425提供从网络服务器430接收的网页的html和/或资源的副本。在复制服务器425从代理服务器420接收到网页之后,复制服务器425可以将接收到的网页作为第二网页提供给在第二设备410上执行的第二浏览器445和在第三设备415上执行的第三浏览器450。第二浏览器445和第三浏览器450可以分别渲染和显示第二网页。
在第一浏览器440的用户435访问的网页由第一浏览器440、第二浏览器445和第三浏览器450中的每一个渲染和显示之后,对由第一浏览器440渲染和显示的第一网页的改变可以在由第二浏览器445和第三浏览器450渲染的网页中复制或拷贝。在一些实施例中,对第一网页的改变可以与在第一浏览器440中与第一网页交互的用户435相关联。通过在由第二浏览器445和第三浏览器450渲染和显示的网页中复制或拷贝与第一网页的用户交互,可以在网络开发期间识别跨浏览器和/或设备的网页内容的不一致渲染的实例。虽然图4示出了第二浏览器445和第三浏览器450,但是网页复制可以发生在任何数量的浏览器和/或设备上。
在阶段520,过程500包括监测由第一浏览器440渲染和显示的第一网页。在代理服务器420从网络服务器430接收到网页之后,代理服务器420可以在网页中注入或提供脚本,并将注入脚本的网页作为第一网页提供给第一浏览器440。在一些实施例中,注入的脚本可以是JavaScript。当第一浏览器440的第一浏览器引擎渲染第一网页时,注入的脚本执行并且可以配置第一浏览器440以监测第一网页的影响所渲染和显示的第一网页的改变。在一些实施例中,影响第一网页的改变可以与在第一浏览器440中与第一网页交互的用户435相关联。在一些实施例中,注入的脚本可以配置第一浏览器440以监测和检测对由第一浏览器440渲染和显示的第一网页的DOM的改变。脚本还可以配置第一浏览器440以向复制服务器425提供检测到的改变。
在阶段522,过程500包括确定是否已经检测到影响第一网页的改变。如果第一浏览器440没有检测到对第一网页的DOM的改变,则过程500返回到阶段520,并且第一浏览器440继续监测第一网页。如果第一浏览器440检测到对第一网页的DOM的改变,则过程500进行到阶段525。第一浏览器440可以向复制服务器425提供对第一网页的DOM的改变。在一些实施例中,第一浏览器440向复制服务器425提供第一网页的新的或改变的DOM。在接收到对第一网页的改变之后,复制服务器425可以向第二浏览器445和第三浏览器450提供改变。
在阶段525,过程500包括在由第二浏览器445和第三浏览器450渲染和显示的网页中复制或拷贝对第一网页的改变,并且过程结束。在一些实施例中,第二浏览器445和第三浏览器450可经配置以从复制服务器425接收对第一网页的改变。如上所述,在复制服务器425从代理服务器420接收到网页之后,复制服务器425可以将接收到的网页作为复制网页提供给第二浏览器445和第三浏览器450。在一些实施例中,复制服务器425可以将复制网页中的脚本包括、注入或提供给第二浏览器445和第三浏览器450。在一些实施例中,注入的脚本可以是JavaScript。注入的脚本可以配置第二浏览器445和第三浏览器450以从复制服务器425接收对第一网页的改变。
注入的脚本还可以配置第二浏览器445和第三浏览器450以复制或拷贝由第二浏览器445和第三浏览器450渲染和显示的网页中的改变。在一些实施例中,在从复制服务器425接收到对第一网页的改变之后,第二浏览器445和第三浏览器450可以基于对第一网页的DOM的改变更新和修改由第二浏览器445和第三浏览器450渲染和显示的网页的相应DOM。在第二浏览器445和第三浏览器450中复制或拷贝对第一网页的改变之后,可以在网络开发期间识别跨第二浏览器445和第三浏览器450和/或设备410和415的网页内容的不一致渲染的实例。
过程500可以由其他系统执行,诸如图9所示的系统900。在一些实施例中,如图9所示,图5中的过程500可以由网络开发服务910来实现。当在第一设备405上运行的第一浏览器440的用户435从第一浏览器440访问网页时,第一浏览器440的第一浏览器引擎442经由网络开发接口925向代理服务器420发送对由第一浏览器440的用户435访问的网页的请求(例如,http/https请求)。在一些实施例中,用户435可以是网络开发人员,并且网络开发服务910可以作为云服务提供。网络开发服务可以包括网络开发接口925。代理服务器420将对所访问网页的请求转发给网络服务器430。网络服务器430从代理服务器420接收请求。网络服务器430通过向代理服务器420提供网页的html来响应从代理服务器420接收的请求。
代理服务器420可以经由网络开发接口925将接收到的网页作为第一网页提供给第一浏览器440。在第一浏览器440从网络开发服务925接收到第一网页之后,第一浏览器440可以为第一设备405的用户435渲染和显示第一网页。网页,诸如由第一浏览器440的用户435访问的网页,可以在不同的浏览器和设备上不同地渲染和显示。因此,除了将从网络服务器430接收的网页作为第一网页提供给第一浏览器440之外,还可以将该网页作为第二网页提供给第二浏览器445和第三浏览器450。在一些实施例中,网络开发接口925可以从代理服务器420接收网页并将网页提供给复制服务器425。在一些实施例中,网络开发接口925可以向复制服务器425提供从网络服务器430接收的网页的html和/或资源的副本。在复制服务器425从网络开发接口925接收到网页之后,复制服务器425可以将接收到的网页作为复制网页存储或记录在数据库745中。
在第一浏览器440渲染和显示由第一浏览器440的用户435访问的网页之后,对由第一浏览器440渲染和显示的第一网页的改变可以存储和记录在数据库745中。在一些实施例中,对第一网页的改变可以与在第一浏览器440中与第一网页交互的用户435相关联。用户交互可以记录或存储在数据库745中,并且在稍后的时间在第二浏览器445和第三浏览器450中复制或拷贝。通过在由第二浏览器445和第三浏览器450渲染和显示的网页中复制或拷贝与第一网页的用户交互,可以在网络开发期间识别跨浏览器和/或设备的网页内容的不一致渲染的实例。虽然图9示出了第二浏览器445和第三浏览器450,但是网页复制可以发生在任何数量的浏览器和/或设备上。
在一些实施例中,在网络开发接口925经由代理服务器420从网络服务器430接收到网页之后,网络开发接口925可以在网页中注入或提供脚本,并将注入脚本的网页作为第一网页提供给第一浏览器440。在一些实施例中,注入的脚本可以是JavaScript。当第一浏览器440的第一浏览器引擎渲染第一网页时,注入的脚本执行并且可以配置第一浏览器440以监测第一网页的影响所渲染和显示的第一网页的改变。在一些实施例中,影响第一网页的改变可以与在第一浏览器440中与第一网页交互的用户435相关联。在一些实施例中,注入的脚本可以配置第一浏览器440以监测和检测对由第一浏览器440渲染和显示的第一网页的DOM的改变。脚本还可以配置第一浏览器440以经由网络开发接口925向复制服务器425提供检测到的改变。在一些实施例中,第一浏览器440可以经由网络开发接口925向复制服务器425提供对第一网页的DOM的改变。在一些实施例中,第一浏览器440经由网络开发接口925向复制服务器425提供第一网页的新的或改变的DOM。在接收到对第一网页的改变之后,复制服务器425可以在数据库945中存储和记录这些改变。
在一些实施例中,第二浏览器445和第三浏览器450可经配置以从数据库945接收对第一网页的改变。如上所述,在复制服务器425经由网络开发接口925从代理服务器420接收到网页之后,复制服务器425可以将接收到的网页作为复制网页存储或记录在数据库945中。在一些实施例中,复制服务器425可以在复制的网页中包括、注入或提供脚本。在一些实施例中,注入的脚本可以是JavaScript。注入的脚本可以配置第二浏览器445和第三浏览器450以从数据库745接收对第一网页的改变。
注入的脚本还可以配置第二浏览器445和第三浏览器450以接收存储在数据库945中的改变并复制或拷贝由第二浏览器445和第三浏览器450渲染和显示的网页中的改变。在一些实施例中,在从数据库745接收到对第一网页的改变之后,第二浏览器445和第三浏览器450可以基于对第一网页的DOM的改变更新和修改由第二浏览器445和第三浏览器450渲染和显示的网页的相应DOM。在第二浏览器445和第三浏览器450中复制或拷贝对第一网页的改变之后,可以在网络开发期间识别跨第二浏览器445和第三浏览器450和/或设备410和415的网页内容的不一致渲染的实例。第二浏览器445和第三浏览器450可以与自动UI问题检测器950接口。网页内容在第二浏览器445和第三浏览器450和/或设备410和415之间的不一致渲染的实例可以由自动UI问题检测器950识别。自动UI问题检测器950可以向网络开发接口925提供关于网页内容在第二浏览器445和第三浏览器450和/或设备410和415之间的不一致渲染的信息,后者反过来可以将该信息提供给用户435。
以这种方式,网络开发人员可以使用网络开发服务910来有效地构建和改进网络应用程序或网页。在网络开发期间,网络开发人员可以访问第一浏览器440中的网页并与其交互。使用网络开发服务910,所访问的网页作为复制网页存储在数据库945中。用户与网页的交互也存储或记录在数据库945中。网络开发人员可以在稍后的时间使用网络开发服务910在多个浏览器和/或设备上同步所存储的复制网页。在浏览器和/或设备上复制或拷贝存储在数据库945中的用户交互。网络内容在浏览器和/或设备上的不一致选择可以由自动UI问题检测器950检测并报告给网络开发人员。
图6图示了由图4的示例实施例执行的用于网页复制的示例过程600。虽然参考图4描述了图6,但是应当注意,图6的步骤可以由其他系统执行。
如阶段615所示,当在第一设备405上运行的第一浏览器440的用户435从第一浏览器440访问网页时,第一浏览器440的第一浏览器引擎442向代理服务器420发送对由第一浏览器440的用户435访问的网页的请求(例如,http/https请求)。如阶段620所示,代理服务器420将对所访问的网页的请求转发到网络服务器430。在阶段625中,在网络服务器430接收到来自代理服务器420的请求之后,网络服务器430通过向代理服务器420提供网页的html来作出响应。
在阶段630中,在代理服务器420从网络服务器430接收到网页的html之后,代理服务器420在从网络服务器430接收到的网页中注入脚本,诸如DOM改变检测器656,并将具有DOM改变检测器656的网页作为第一网页提供给第一浏览器440。在一些实施例中,注入的脚本可以是JavaScript。在第一浏览器440从代理服务器420接收到第一网页的html之后,第一浏览器440的第一浏览器引擎442可以渲染第一网页。如果第一网页的html引用诸如CSS、图像和字体的资源,则第一浏览器440可以从网络服务器430请求资源。在阶段631中,第一浏览器440向代理服务器420发送对网页中引用的资源的请求。在阶段632中,在代理服务器420接收到对第一网页中引用的资源的请求之后,代理服务器420将该请求转发到网络服务器430。在阶段633中,网络服务器430通过向代理服务器420提供资源来响应该请求。在阶段634中,在代理服务器420从网络服务器430接收到由第一网页引用的资源之后,代理服务器420将资源提供给第一浏览器440的第一浏览器引擎442。在阶段635中,在代理服务器420从网络服务器430接收到由第一网页引用的资源之后,代理服务器420还将资源提供给复制服务器425。基于第一网页的html和资源,第一浏览器440的第一浏览器引擎442渲染第一网页。在阶段640中,第一浏览器引擎442构建第一网页的DOM(称为第一网页DOM 645)。回到阶段630,代理服务器420将DOM改变检测器656注入网页的html中,并将注入脚本的网页作为第一网页提供给第一浏览器440。在阶段665中,DOM改变检测器656执行,并且如阶段665和666中所示,DOM改变检测器656获得第一网页DOM 645。在阶段670中,DOM改变检测器656将第一网页DOM 645提供给复制服务器425。
在阶段673中,第二浏览器445向复制服务器425请求复制页面。在阶段675中,基于对复制页面的请求,复制服务器425向第二浏览器445提供由第一网页和第一网页DOM 645引用的资源。复制服务器425还提供具有第一网页资源和第一网页DOM 645的脚本。在一些实施例中,脚本可以是JavaScript。在阶段680中,在第二浏览器445从复制服务器425接收到网页资源、第一网页DOM 645和注入的脚本之后,第二浏览器445的第二浏览器引擎452渲染第二网页并构建第二网页的DOM(称为第二网页DOM682)。由复制服务器425提供的脚本执行,并且在阶段684中,在复制服务器425与第二浏览器445之间建立网络套接字686。
在阶段688中,DOM改变检测器656可以监测第一网页DOM 645。如阶段690和692所示,在检测到对第一网页DOM 645的改变时,DOM改变检测器656将检测到的改变提供给复制服务器425。在阶段694中,复制服务器425经由网络套接字686将检测到的改变提供给第二浏览器450。在阶段694中,在复制服务器425接收到检测到的对第一网页DOM 645的改变之后,复制服务器425经由网络套接字686将检测到的改变提供给第二浏览器445。在阶段696中,在经由网络套接字686接收到对第一网页DOM 645的改变之后,在第二网页DOM 682中复制或拷贝对第一网页DOM 645的改变。
尽管已经以特定于结构特征和/或方法动作的语言描述了本主题,但是应当理解,所附权利要求书中定义的主题不一定限于上述特定特征或动作。相反,以上描述的具体特征和动作是作为以下权利要求的示例实现来描述的。

Claims (19)

1.一种方法,包括:
接收由在第一计算设备上运行的第一浏览器请求的网页;
将接收到的网页作为第一网页提供给在所述第一计算设备上运行的所述第一浏览器,其中所述第一网页由所述第一浏览器渲染和显示;
通过复制所述接收到的网页生成第二网页;
将所述第二网页提供给在第二计算设备上运行的第二浏览器,其中所提供的第二网页由所述第二浏览器渲染和显示;
监测由所述第一浏览器渲染和显示的所述第一网页的影响所述第一网页的至少一个改变;以及
基于检测到影响由所述第一浏览器渲染和显示的所述第一网页的所述至少一个改变,在由所述第二浏览器渲染和显示的所述第二网页中复制检测到的影响所述第一网页的所述至少一个改变。
2.根据权利要求1所述的方法,还包括:
配置所述第一浏览器以:
监测由所述第一浏览器渲染和显示的所述第一网页的影响所述第一网页的至少一个改变;以及
基于检测到影响由所述第一浏览器渲染和显示的所述第一网页的所述至少一个改变,将检测到的所述至少一个改变提供给所述第二浏览器。
3.根据权利要求2所述的方法,还包括:
配置所述第二浏览器以:
从所述第一浏览器接收所述检测到的影响所述第一网页的至少一个改变;以及
基于接收到所述检测到的影响所述第一网页的至少一个改变,在由所述第二浏览器渲染和显示的所述第二网页中复制所述检测到的影响所述第一网页的至少一个改变。
4.根据权利要求1所述的方法,其中影响所述第一网页的所述至少一个改变与所述浏览器的用户相关联,所述浏览器的所述用户与由所述第一浏览器渲染和显示的所述第一网页交互。
5.根据权利要求1所述的方法,其中由在第一计算设备上运行的所述第一浏览器请求的所述网页是网页应用程序。
6.根据权利要求1所述的方法,其中影响由所述第一浏览器渲染和显示的所述第一网页的所述至少一个改变包括对所述第一网页的文档对象模型(DOM)表示的至少一个改变。
7.根据权利要求6所述的方法,其中在由所述第二浏览器渲染和显示的所述第二网页中复制所述检测到的影响所述第一网页的至少一个改变还包括:
在所述第二网页的DOM表示中复制对所述第一网页的所述DOM表示的所述至少一个改变。
8.根据权利要求1所述的方法,其中在所述第一计算设备上运行的所述第一浏览器的第一用户界面不同于在所述第二计算设备上运行的所述第二浏览器的第二用户界面。
9.根据权利要求1所述的方法,其中在所述第一计算设备上运行的所述第一浏览器不同于在所述第二计算设备上运行的所述第二浏览器。
10.一种系统,包括:
存储器;以及
处理器,其耦合到所述存储器且经配置以:
接收由在第一计算设备上运行的第一浏览器请求的网页;
将接收到的网页作为第一网页提供给在所述第一计算设备上运行的所述第一浏览器,其中所述第一网页由所述第一浏览器渲染和显示;
通过复制所述接收到的网页生成第二网页;
将所述第二网页提供给在第二计算设备上运行的第二浏览器,其中所提供的第二网页由所述第二浏览器渲染和显示;
监测由所述第一浏览器渲染和显示的所述第一网页的影响所述第一网页的至少一个改变;以及
基于检测到影响由所述第一浏览器渲染和显示的所述第一网页的所述至少一个改变,在由所述第二浏览器渲染和显示的所述第二网页中复制检测到的影响所述第一网页的所述至少一个改变。
11.根据权利要求10所述的系统,其中所述处理器还经配置以:
配置所述第一浏览器以:
监测由所述第一浏览器渲染和显示的所述第一网页的影响所述第一网页的至少一个改变;以及
基于检测到影响由所述第一浏览器渲染和显示的所述第一网页的所述至少一个改变,将检测到的所述至少一个改变提供给所述第二浏览器。
12.根据权利要求10所述的系统,其中所述处理器还经配置以:
配置所述第二浏览器以:
从所述第一浏览器接收所述检测到的影响所述第一网页的至少一个改变;以及
基于接收到所述检测到的影响所述第一网页的至少一个改变,在由所述第二浏览器渲染和显示的所述第二网页中同步地复制所述检测到的影响所述第一网页的至少一个改变。
13.根据权利要求10所述的系统,其中影响所述第一网页的所述至少一个改变与所述浏览器的用户相关联,所述浏览器的所述用户与由所述第一浏览器渲染和显示的所述第一网页交互。
14.根据权利要求10所述的系统,其中由在第一计算设备上运行的所述第一浏览器请求的所述网页是网页应用程序。
15.根据权利要求10所述的系统,其中影响由所述第一浏览器渲染和显示的所述第一网页的所述至少一个改变包括对所述第一网页的文档对象模型(DOM)表示的至少一个改变。
16.根据权利要求15所述的系统,其中在由所述第二浏览器渲染和显示的所述第二网页中复制所述检测到的影响所述第一网页的至少一个改变还包括:
在所述第二网页的DOM表示中复制对所述第一网页的所述DOM表示的所述至少一个改变。
17.根据权利要求10所述的系统,其中在所述第一计算设备上运行的所述第一浏览器的第一用户界面不同于在所述第二计算设备上运行的所述第二浏览器的第二用户界面。
18.根据权利要求10所述的系统,其中在所述第一计算设备上运行的所述第一浏览器不同于在所述第二计算设备上运行的所述第二浏览器。
19.一种非暂时性机器可读存储介质,包括用于使处理器执行包括以下步骤的方法的机器可读指令:
接收由在第一计算设备上运行的第一浏览器请求的网页;
将接收到的网页作为第一网页提供给在所述第一计算设备上运行的所述第一浏览器,其中所述第一网页由所述第一浏览器渲染和显示;
通过复制所述接收到的网页生成第二网页;
将所述第二网页提供给在第二计算设备上运行的第二浏览器,其中所提供的第二网页由所述第二浏览器渲染和显示;
监测由所述第一浏览器渲染和显示的所述第一网页的影响所述第一网页的至少一个改变;以及
基于检测到影响由所述第一浏览器渲染和显示的所述第一网页的所述至少一个改变,在由所述第二浏览器渲染和显示的所述第二网页中复制检测到的影响所述第一网页的所述至少一个改变。
CN201980095240.5A 2019-04-01 2019-04-01 网页复制 Pending CN113661694A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/080852 WO2020199091A1 (en) 2019-04-01 2019-04-01 Web page duplication

Publications (1)

Publication Number Publication Date
CN113661694A true CN113661694A (zh) 2021-11-16

Family

ID=72606154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980095240.5A Pending CN113661694A (zh) 2019-04-01 2019-04-01 网页复制

Country Status (6)

Country Link
US (1) US20200311176A1 (zh)
EP (1) EP3949342A4 (zh)
CN (1) CN113661694A (zh)
AU (1) AU2019439694A1 (zh)
CA (1) CA3134395A1 (zh)
WO (1) WO2020199091A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
PT3247084T (pt) 2016-05-17 2019-06-06 Nolve Dev S L Servidor e metodo para fornecer acesso seguro a serviços com base na web
US11556699B2 (en) * 2019-02-04 2023-01-17 Citrix Systems, Inc. Data migration across SaaS applications
US20220043546A1 (en) * 2020-08-05 2022-02-10 360 It, Uab Selective server-side rendering of scripted web page interactivity elements
CN115470127B (zh) * 2022-09-06 2023-08-15 北京海泰方圆科技股份有限公司 页面兼容性处理方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140136944A1 (en) * 2012-11-09 2014-05-15 Adobe Systems Incorporated Real time web development testing and reporting system
CN103927253A (zh) * 2013-01-11 2014-07-16 阿里巴巴集团控股有限公司 多浏览器兼容性测试方法及系统
CN105468779A (zh) * 2015-12-16 2016-04-06 中国科学院软件研究所 一种面向浏览器兼容性检测的客户端Web应用捕获与重放系统及方法
CN105765487A (zh) * 2013-06-27 2016-07-13 贝宝公司 网页浏览器中事件的执行和显示

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8868533B2 (en) * 2006-06-30 2014-10-21 International Business Machines Corporation Method and apparatus for intelligent capture of document object model events
EP2225869A2 (en) * 2007-11-23 2010-09-08 Koninklijke Philips Electronics N.V. Co-browsing (java) scripted html documents
US8924943B2 (en) * 2009-07-17 2014-12-30 Ebay Inc. Browser emulator system
CN102340540B (zh) * 2011-07-25 2015-07-15 惠州Tcl移动通信有限公司 无线通讯设备、基于无线通讯设备的网页共享系统及方法
US9396259B1 (en) * 2012-04-18 2016-07-19 Amazon Technologies, Inc. Capture of web application state
CN102752388B (zh) * 2012-06-29 2016-12-28 百度在线网络技术(北京)有限公司 基于浏览器的交互系统、方法、浏览器和云端服务器
US10827011B2 (en) * 2012-07-19 2020-11-03 Glance Networks, Inc. Presence enhanced co-browsing customer support
AU2013290566B2 (en) * 2012-07-19 2018-03-08 Glance Networks, Inc Integrating co-browsing with other forms of information sharing
US9635094B2 (en) * 2012-10-15 2017-04-25 International Business Machines Corporation Capturing and replaying application sessions using resource files
US9535720B2 (en) * 2012-11-13 2017-01-03 International Business Machines Corporation System for capturing and replaying screen gestures
CN104065692B (zh) * 2013-04-02 2015-08-12 腾讯科技(深圳)有限公司 网页游戏交互的方法、设备和系统
CN103414789A (zh) * 2013-08-28 2013-11-27 英华达(上海)科技有限公司 网页数据同步浏览系统及其浏览方法
US10394924B2 (en) * 2014-06-01 2019-08-27 Apple Inc. Synchronized web browsing histories: processing deletions and limiting communications to server
US10146752B2 (en) * 2014-12-31 2018-12-04 Quantum Metric, LLC Accurate and efficient recording of user experience, GUI changes and user interaction events on a remote web document
US10291722B1 (en) * 2015-04-30 2019-05-14 Glance Networks, Inc. Method and apparatus for implementing co-browsing between domains
EP3323053B1 (en) * 2015-07-16 2021-10-20 Quantum Metric, Inc. Document capture using client-based delta encoding with server
US10102306B2 (en) * 2016-05-03 2018-10-16 International Business Machines Corporation Patching base document object model (DOM) with DOM-differentials to generate high fidelity replay of webpage user interactions
US10404688B2 (en) * 2017-01-31 2019-09-03 Glance Networks, Inc. Method and apparatus for enabling co-browsing of third party websites
US10693974B2 (en) * 2017-09-28 2020-06-23 Citrix Systems, Inc. Managing browser session navigation between one or more browsers
US10846193B2 (en) * 2017-12-01 2020-11-24 Dynatrace Llc Method and system for real-user capable detecting of the visual completeness of browser rendering process
US10482148B2 (en) * 2017-12-06 2019-11-19 Capital One Services, Llc Systems and methods for co-browsing
US10862940B1 (en) * 2018-07-31 2020-12-08 Glance Networks, Inc. Low latency live video on a communication session
WO2021167832A1 (en) * 2020-02-20 2021-08-26 Glance Networks, Inc. Method and apparatus for co-browsing shadow dom elements

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140136944A1 (en) * 2012-11-09 2014-05-15 Adobe Systems Incorporated Real time web development testing and reporting system
CN103927253A (zh) * 2013-01-11 2014-07-16 阿里巴巴集团控股有限公司 多浏览器兼容性测试方法及系统
CN105765487A (zh) * 2013-06-27 2016-07-13 贝宝公司 网页浏览器中事件的执行和显示
CN105468779A (zh) * 2015-12-16 2016-04-06 中国科学院软件研究所 一种面向浏览器兼容性检测的客户端Web应用捕获与重放系统及方法

Also Published As

Publication number Publication date
CA3134395A1 (en) 2020-10-08
US20200311176A1 (en) 2020-10-01
EP3949342A1 (en) 2022-02-09
WO2020199091A1 (en) 2020-10-08
AU2019439694A1 (en) 2021-10-14
EP3949342A4 (en) 2022-10-26

Similar Documents

Publication Publication Date Title
CN107925685B (zh) 用于安全网页浏览的重定向器
US11108845B2 (en) Rendering a web application in a cloud service
US20200311176A1 (en) Web Page Duplication
US11182180B2 (en) Previewing application user interface for multiple locales
US20190079640A1 (en) Redirection of Web Content
US11392395B2 (en) Generating and presenting contextual user interfaces on devices with foldable displays
US10775975B2 (en) Detecting software user interface issues in multiple language environments
AU2019294343B2 (en) Intermediated retrieval of networked content
US20210326537A1 (en) Secure Translation of Sensitive Content
US11675964B2 (en) Management of remote access user application layouts
US20230056176A1 (en) Text input synchronization for remote applications
CN113557503A (zh) 智能文件推荐引擎
US20230108778A1 (en) Automated Generation of Objects for Kubernetes Services
US11822872B2 (en) Rendering based on a document object model
US20210294988A1 (en) Machine Translation of Digital Content
US20230131665A1 (en) Updating virtual images of computing environments
US20230055406A1 (en) Input method editor for remote applications
US20230275954A1 (en) Remote browser session presentation with local browser tabs
WO2024065379A1 (en) Dynamic content sharing
US20240015162A1 (en) User Interface Activation in a Secure Network System

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