IP Library Granted Patent US 10,146,752
Granted Patent B2
US 10,146,752 · App. 14/984,102 · Granted Dec 4, 2018

Accurate and efficient recording of user experience, GUI changes and user interaction events on a remote web document

Inventors: Mario Luciano Ciabarra, Jr. (Colorado Springs, CO); Yiduo Wang (Portland, OR)
Assignee: Quantum Metric, LLC
G06F17/2247G06F17/2205G06F17/2211G06F17/30896
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,146,752
App. No.
14/984,102
Granted
Dec 4, 2018
Kind
B2
Abstract

The present disclosure describes how to capture events (e.g., changes and user interactions) of a Web document and combine those changes with the original DOM displayed to accurately and efficiently enable a replay engine to redisplay the DOM, changes, and user interactions which occurred within a user's browser. The data collected from a client-side HTML DOM capture engine can be combined with a minimal amount of contextual information to a replay engine so as to accurately and efficiently replay a session of a plurality of web documents.

Claims (63)

1. A method for tracking events associated with a web document on a client device, the method comprising performing, by the client device:

receiving the web document at the client device;

receiving a capture agent in conjunction with a delivery of the web document, the capture agent configured to execute on the client device;

parsing the web document to generate a Document Object Model (DOM) tree, the DOM tree including a plurality of nodes;

identifying, by the capture agent, a DOM tree modification resulting in a modified DOM tree by monitoring the DOM tree for addition of nodes to the DOM tree, removal of nodes from the DOM tree, and modification of nodes in the DOM tree, the DOM tree modification containing a first node modification associated with a first node and a second node modification associated with a second node;

determining, by the capture agent, the first node modification and the second node modification to be an overlapping modification based on the first node being an ancestor of the second node in the DOM tree, the first node modification targeting a subtree of the DOM tree including the second node;

determining, by the capture agent, first identification information for uniquely identifying the first node;

generating, by the capture agent, an event record for the DOM tree modification, the event record including the first identification information for uniquely identifying the first node and the first node modification, the event record suppressing duplicate information by not including the second node modification based on the determination that the first node modification and the second node modification are the overlapping modification; and

transmitting, from the capture agent, the event record to a server-side web session storage engine, wherein the server-side web session storage engine uses a server-side captured DOM tree of the web document, the first identification information, and the first node modification to generate the modified DOM tree.

2. The method of claim 1 , wherein the event includes a user interaction event associated with the web document.

3. The method of claim 1 , wherein the determining of the first identification information includes:

searching for a unique DOM node identifier of the first node.

4. The method of claim 3 , wherein the determining of the first identification information further includes:

when a unique DOM node identifier is not found for the first node:

searching for a sibling or ancestor node of the first node that has a unique DOM node identifier;

when the sibling or ancestor node of the first node that has the unique DOM node identifier is identified, determining a path from the sibling or ancestor node of the first node to the first node; and

establishing the unique DOM node identifier of the sibling or ancestor node of the first node and the path as the first identification information.

5. The method of claim 4 , wherein the path includes an order of the first node among its siblings.

6. The method of claim 4 , wherein the determining of the first identification information further includes:

when no sibling or ancestor node of the first node is identified that has a unique DOM node identifier:

storing DOM element attributes that are unique among sibling DOM elements to identify a start node in the path to the first node.

7. The method of claim 3 , wherein the determining of the first identification information further includes:

when a unique DOM node identifier is not found:

establishing DOM element attributes of the first node that are unique as the first identification information.

8. The method of claim 1 , further comprising:

merging, by the capture agent, adjacent sibling DOM text nodes into a single node for identification of the first node.

9. The method of claim 1 , further comprising:

storing, by the capture agent, the event record in client storage until the event record is transmitted to the server-side web session storage engine; and

deleting the event record from the client storage after sending the event record to the server-side web session storage engine.

10. The method of claim 9 , further comprising:

subsequent to deleting the event record, capturing a plurality of additional events associated with nodes in the DOM tree; and

for each additional event of the plurality of additional events:

determining additional identification information of an additional node associated with the additional event, and

generating an additional event record for the additional event;

transmitting, from the capture agent, the additional event records to the server-side web session storage engine.

11. The method of claim 1 , further comprising:

displaying a web page rendered based upon the web document by a web browser, wherein the capture agent sends the event record when the web browser is not making any other network requests.

12. The method of claim 1 , further comprising:

compressing, by the capture agent, the event record before transmitting the event record to the server-side web session storage engine.

13. The method of claim 1 , further comprising:

stripping, by the capture agent, sensitive information before transmitting the event record to the server-side web session storage engine.

14. The method of claim 1 , further comprising:

creating, by the capture agent, a first list of modified nodes in the DOM tree modification and a second list of parent nodes of the first node; and

determining, by the capture agent, the first node to be the ancestor of the second node in the DOM tree by comparing nodes of the first list to nodes of the second list.

15. A computer product comprising a non-transitory computer readable medium storing a plurality of instructions for controlling a client device to track events associated with a web document on the client device, the plurality of instructions comprising:

receiving the web document at the client device;

receiving a capture agent in conjunction with a delivery of the web document, the capture agent configured to execute on the client device;

parsing the web document to generate a Document Object Model (DOM) tree, the DOM tree including a plurality of nodes;

identifying, by the capture agent, a DOM tree modification resulting in a modified DOM tree by monitoring the DOM tree for addition of nodes to the DOM tree, removal of nodes from the DOM tree, and modification of nodes in the DOM tree, the DOM tree modification containing a first node modification associated with a first node and a second node modification associated with a second node;

determining, by the capture agent, the first node modification and the second node modification to be an overlapping modification based on the first node being an ancestor of the second node in the DOM tree, the first node modification targeting a subtree of the DOM tree including the second node;

generating, by the capture agent, an event record for the DOM tree modification, the event record including the first identification information for uniquely identifying the first node and the first node modification, the event record suppressing duplicate information by not including the second node modification based on the determination that the first node modification and the second node modification are the overlapping modification; and

transmitting, from the capture agent, the event record to a server-side web session storage engine, wherein the server-side web session storage engine uses a server-side captured DOM tree of the web document, the first identification information, and the first node modification to generate the modified DOM tree.

16. A system comprising:

one or more processors; and

a non-transitory computer-readable medium including instructions that, when executed by the one or more processors, cause the one or more processors to:

receive a web document at a client device;

receive a capture agent in conjunction with a delivery of the web document, the capture agent configured to execute on the client device;

parse the web document to generate a Document Object Model (DOM) tree, the DOM tree including a plurality of nodes;

identify, by the capture agent, a DOM tree modification resulting in a modified DOM tree by monitoring the DOM tree for addition of nodes to the DOM tree, removal of nodes from the DOM tree, and modification of nodes in the DOM tree, the DOM tree modification containing a first node modification associated with a first node and a second node modification associated with a second node;

determine, by the capture agent, the first node modification and the second node modification to be an overlapping modification based on the first node being an ancestor of the second node in the DOM tree, the first node modification targeting a subtree of the DOM tree including the second node;

determine, by the capture agent, first identification information for uniquely identifying the first node;

generate, by the capture agent, an event record for the DOM tree modification, the event record including the first identification information for uniquely identifying the first node and the first node modification, the event record suppressing duplicate information by not including the second node modification based on the determination that the first node modification and the second node modification are the overlapping modification; and

transmit, from the capture agent, the event record to a server-side web session storage engine, wherein the server-side web session storage engine uses a server-side captured DOM tree of the web document, the first identification information, and the first node modification to generate the modified DOM tree.

Assignments (4)
SECURITY INTEREST Recorded Oct 5, 2023
From: QUANTUM METRIC, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065138/0586 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INVENTOR'S EXECTUTION DATE PREVIOUSLY RECORDED AT REEL: 049636 FRAME: 0257. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Jun 14, 2021
From: QUANTUM METRIC, LLC
To: QUANTUM METRIC, INC.
Reel/Frame 056586/0403 →
CHANGE OF NAME Recorded Jun 28, 2019
From: QUANTUM METRIC, LLC
To: QUANTUM METRIC, INC.
Reel/Frame 049636/0257 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2015
From: CIABARRA, MARIO LUCIANO, JR.; WANG, YIDUO
To: QUANTUM METRIC, LLC
Reel/Frame 037386/0524 →
Continuity (2)
Provisional Application 62098951 · Dec 31, 2014
Related Publication 20160188548A1 · Jun 30, 2016
Cited By (2)
US 12,399,820 US 12,487,924