# US 2017/0289293 A1 · Manipulation of browser dom on server

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2017/0289293 A1
- Document ID: US20170289293A1
- Status: Published application
- Kind: A1
- Application number: 15/089,347
- Filed: 2016-04-01
- Published: 2017-10-05
- Earliest claimed: 2016-04-01
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Technology Licensing, LLC
- Inventors: Vitaly L. Rubtsov; Boris Asipov; Michael Aksionkin
- Web page: https://patentgrep.com/patent/US20170289293A1

## CPC

- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 67/565: Conversion or adaptation of application format or content (adding application control or application functional data H04L67/561)
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/146: Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Methods, systems, apparatuses, and computer program products are provided for enabling server-side web application execution by maintaining a server-side DOM that is mirrored at the client-side. A client-side DOM is rendered in a browser at a client computing device and corresponds to a server-side DOM at a server. An event indication associated with the client-side DOM is received from a client-side event manager at the client computing device. The received event indication is provided to server-side application code defining a web application to which the client-side DOM corresponds. An instruction is generated by the server-side application code based on the event indication. The server-side DOM is modified in response to the instruction. An indication of the modification is provided to a client-side DOM manager at the client computing device to apply to the client-side DOM, thereby synchronizing the client-side DOM to the server-side DOM.

## Claims

### Claim 1

A method in a server, comprising:
receiving an event indication associated with a client-side DOM (document object model) from a client-side event manager at a client computing device, the client-side DOM rendered in a browser and corresponding to a server-side DOM at the server;
providing the received event indication to server-side application code defining a web application to which the client-side DOM corresponds;
receiving an instruction generated based on the event indication by the server-side application code;
modifying the server-side DOM in response to the instruction; and
providing an indication of the modification to a client-side DOM manager at the client to apply to the client-side DOM.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
initiating the web application at the server and client computing device prior to said receiving the event indication.

### Claim 3 (depends on 2)

The method of claim 2, wherein said initiating comprises:
receiving a request for a uniform resource locator (URL) from the client computing device;
resolving the URL to the web application;
copying the server-side application code into memory in response to said resolving; and
invoking the server-side application code.

### Claim 4 (depends on 2)

The method of claim 2, wherein said initiating comprises:
generating the server-side DOM at the server based on the server-side application code; and
providing the client computing device with the client-side event manager and the client-side DOM manager configured to run in the browser at the client computing device, the client-side DOM manager configured to generate the client-side DOM at the client computing device.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
subscribing to one or more events with respect to the browser; and
wherein said providing the received event indication to server-side application code defining a web application comprises:
filtering the event indications to only event indications corresponding to the subscribed one or more events; and
providing the filtered event indications to the server-side application code.

### Claim 6 (depends on 1)

The method of claim 1, wherein the client-side event manager and the client-side DOM manager include JavaScript program code and the server-side application code includes server language program code.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
receiving a second instruction generated by the server-side application code based on a second event indication received by the server-side application code from a non-client-side DOM entity, the non-client DOM entity having generated the second event indication based on at least one event at the non-client DOM entity;
modifying the server-side DOM in response to the second instruction; and
providing to the client-side DOM manager, to apply the client-side DOM, an indication of the modification to the server-side DOM made in response to the second instruction.

### Claim 8

A server that includes at least one processor circuit and memory, comprising:
a server-side DOM (document object model) manager configured to manage a server-side DOM at the server for a web application, the server-side DOM manager configured to modify the server-side DOM in response to instructions from server-side application code defining the web application;
a change tracker configured to track modifications made to the server-side DOM by the server-side DOM manager, and to provide indications of the tracked modifications to a client computing device that includes a browser that renders a client-side DOM corresponding to the server-side DOM, the browser configured to implement the tracked modifications in the client-side DOM; and
a server-side event manager configured to receive event indications associated with the client-side DOM from the browser, and provide the event indications to the server-side application code, the server-side application code generating the instructions based at least on the event indications.

### Claim 9 (depends on 8)

The server of claim 8, wherein the server further comprises:
a web application invoker configured to invoke the web application at the server.

### Claim 10 (depends on 9)

The server of claim 9, wherein the web application invoker is configured to:
receive a request for a uniform resource locator (URL) from the client computing device;
resolve the URL to the web application;
copy the server-side application code into memory in response to said resolving; and
invoke the server-side application code.

### Claim 11 (depends on 9)

The server of claim 9, wherein the server-side DOM manager is configured to generate the server-side DOM at the server based on the server-side application code; and
the web application invoker is configured to provide the client computing device with the client-side event manager and the client-side DOM manager configured to run in the browser at the client computing device, the client-side DOM manager configured to generate the client-side DOM at the client computing device.

### Claim 12 (depends on 8)

The server of claim 8, wherein the event manager is configured to subscribe to one or more events with respect to the browser, filter the received event indications to only event indications corresponding to the subscribed one or more events, and provide the filtered event indications to the server-side application code.

### Claim 13 (depends on 8)

The server of claim 8, wherein the client-side event manager and the client-side DOM manager include JavaScript program code and the server-side application code includes server language program code.

### Claim 14 (depends on 8)

The server of claim 8, further comprising:
a connection manager configured to open a connection between the client computing device and server according to a bi-directional protocol, and maintain open the connection between the client computing device and server for multiple iterations of transmissions of event indications from the client computing device to the server and transmissions of modification indications from the server to the client computing device.

### Claim 15

A computing device, comprising:
at least one processor circuit; and
a memory that stores program code configured to be executed by the at least one processor circuit to perform operations, the operations including:
receiving an event indication associated with a client-side DOM (document object model) from a client-side event manager at a client computing device, the client-side DOM rendered in a browser at the client computing device and corresponding to a server-side DOM at the server;
providing the received event indication to server-side application code defining a web application to which the client-side DOM corresponds;
receiving an instruction generated based on the event indication by the server-side application code;
modifying the server-side DOM in response to the instruction; and
providing an indication of the modification to a client-side DOM manager at the client computing device to apply to the client-side DOM.

### Claim 16 (depends on 15)

The computing device of claim 15, wherein the operations further comprise:
initiating the web application at the server and client computing device prior to said receiving the event indication.

### Claim 17 (depends on 16)

The computing device of claim 16, wherein said initiating comprises:
receiving a request for a uniform resource locator (URL) from the client computing device;
resolving the URL to the web application;
copying the server-side application code into memory in response to said resolving; and
invoking the server-side application code.

### Claim 18 (depends on 16)

The computing device of claim 16, wherein said initiating comprises:
generating the server-side DOM at the server based on the server-side application code; and
providing the client computing device with the client-side event manager and the client-side DOM manager configured to run in the browser at the client computing device, the client-side DOM manager configured to generate the client-side DOM at the client computing device.

### Claim 19 (depends on 15)

The computing device of claim 15, wherein the operations further comprise:
subscribing to one or more events with respect to the browser; and
wherein said providing the received event indication to server-side application code defining a web application comprises:
filtering the event indications to only event indications corresponding to the subscribed one or more events; and
providing the filtered event indications to the server-side application code.

### Claim 20 (depends on 15)

The computing device of claim 15, wherein the operations further comprise:
opening a connection between the client computing device and server according to a bi-directional protocol; and
maintaining open the connection between the client computing device and server for multiple iterations of transmissions of event indications from the client computing device to the server and transmissions of modification indications from the server to the client computing device.
