IP Library › Granted Patent US 11,106,757
Granted Patent B1
US 11,106,757 · App. 16/877,076 · Granted Aug 31, 2021

Framework for augmenting document object model trees optimized for web authoring

Inventors: Alessandro Curzi (Dublin, IE); Dinh Doan Van Bien (Dublin, IE); Paul Barnes (Celbridge, IE); Ian Sultanov (Dublin, IE); Andrew Donohoe (Dublin, IE)
Assignee: Microsoft Technology Licensing, LLC.
G06F16/9577G06F16/986G06F40/169
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 11,106,757
App. No.
16/877,076
Filed
May 18, 2020
Granted
Aug 31, 2021
Kind
B1
Examiner
KELLS, ASHER
Art Unit
2144
USPC
715/234
Abstract

Techniques for providing writing assistance features a web browser or a native application including an embedded web browser herein include detecting that a webpage has been rendered by the web browser; analyzing a structure of the webpage to determine a topology of the webpage by accessing a Document Object Model (DOM) of the webpage and traversing the DOM of the webpage to identify nodes comprising the webpage to determine the topology of the webpage; construct a model of the webpage based on the topology, wherein the model of the webpage is configured to automatically monitor the topology of the webpage and to update the model based on detected changes to the webpage; detect, using the model, a change in textual content of an input element of the webpage; obtain annotation information associated with the textual content; and render the annotations over at least a portion of the webpage.

Claims (85)

1. A data processing system comprising:

a processor; and

a computer-readable medium storing executable instructions for causing the processor to perform operations comprising:

detecting that a webpage has been rendered by a web browser;

analyzing a structure of the webpage to determine a topology of the webpage by accessing a Document Object Model (DOM) of the webpage and traversing the DOM of the webpage to identify nodes comprising the webpage to determine the topology of the webpage;

construct a model of the webpage based on the topology of the webpage, wherein the model of the webpage is configured to automatically monitor the topology of the webpage and to update the model based on detected changes to the webpage;

detect, using the model, a change in textual content of an input element of the webpage;

obtain annotation information associated with the textual content on the webpage; and

render the annotation information over at least a portion of the webpage displayed by the web browser.

2. The data processing system of claim 1 , wherein to construct the model of the webpage the computer-readable medium further stores executable instructions for causing the processor to perform functions of:

identifying nodes in the DOM representing textual input elements;

constructing a subtree representing each textual input element of the webpage; and

adding the subtree to the model of the webpage.

3. The data processing system of claim 2 , to construct the subtree for a respective textual input element the computer-readable medium further stores executable instructions for causing the processor to perform functions of:

generating an outline node as a root of the subtree that includes a reference to a corresponding node in the DOM that represents the respective textual input element; and

generating one or more terminal nodes that represent at least a portion of textual content included in the respective textual input element.

4. The data processing system of claim 3 , wherein to construct the subtree for a respective textual input element the computer-readable medium further stores executable instructions for causing the processor to perform functions of:

dividing textual content of the textual input element into a plurality of sub-elements; and

associating each sub-element with a terminal node of the subtree.

5. The data processing system of claim 4 , wherein to detect the change in the textual content of the input element of the webpage the computer-readable medium further stores executable instructions for causing the processor to perform functions of:

listening for DOM mutation events produced by the DOM of the webpage indicative of the textual content of the input element being changed responsive to user interactions with the webpage;

extracting the textual content of the input element from the DOM responsive to detecting a DOM mutation event;

dividing textual content of the textual input element into a plurality of updated sub-elements; and

associating each updated sub-element with a terminal node of the subtree.

6. The data processing system of claim 5 , wherein the computer-readable medium further stores executable instructions for causing the processor to perform operations including:

generating a request that includes at least a subset of the plurality of sub-elements of the updated textual content to a remote server to obtain annotation information identifying one or more improvements to the updated textual content; and

receiving a response from the remote server that includes the annotation information, the annotation information comprising at least one suggested improvement to the updated textual content.

7. The data processing system of claim 6 , wherein to render the annotation information over at least a portion of the webpage displayed by the web browser the computer-readable medium further stores executable instructions for causing the processor to perform functions of:

determining a type of annotation to be rendered based on the annotation information;

determining a location on the webpage over which the annotation information is to be rendered; and

rendering a representation of the annotation information based on the annotation information and the determined location.

8. A method for providing writing assistance features in a web browser or native application including an embedded web browser, the method comprising:

detecting that a webpage has been rendered by the web browser;

analyzing a structure of the webpage to determine a topology of the webpage by accessing a Document Object Model (DOM) of the webpage and traversing the DOM of the webpage to identify nodes comprising the webpage to determine the topology of the webpage;

construct a model of the webpage based on the topology of the webpage, wherein the model of the webpage is configured to automatically monitor the topology of the webpage and to update the model based on detected changes to the webpage;

detect, using the model, a change in textual content of an input element of the webpage;

obtain annotation information associated with the textual content on the webpage; and

render the annotation information over at least a portion of the webpage displayed by the web browser.

9. The method of claim 8 , wherein constructing the model of the webpage further comprises:

identifying nodes in the DOM representing textual input elements;

constructing a subtree representing each textual input element of the webpage; and

adding the subtree to the model of the webpage.

10. The method of claim 9 , wherein constructing the subtree for a respective textual input element comprises:

generating an outline node as a root of the subtree that includes a reference to a corresponding node in the DOM that represents the respective textual input element; and

generating one or more terminal nodes that represent at least a portion of textual content included in the respective textual input element.

11. The method of claim 10 , wherein constructing the subtree for a respective textual input element comprises:

dividing textual content of the textual input element into a plurality of sub-elements; and

associating each sub-element with a terminal node of the subtree.

12. The method of claim 11 , wherein detecting the change in the textual content of the input element of the webpage further comprises:

listening for DOM mutation events produced by the DOM of the webpage indicative of the textual content of the input element being changed responsive to user interactions with the webpage;

extracting the textual content of the input element from the DOM responsive to detecting a DOM mutation event;

dividing textual content of the textual input element into a plurality of updated sub-elements; and

associating each updated sub-element with a terminal node of the subtree.

13. The method of claim 12 , further comprising:

generating a request that includes at least a subset of the plurality of sub-elements of the updated textual content to a remote server to obtain annotation information identifying one or more improvements to the updated textual content; and

receiving a response from the remote server that includes the annotation information, the annotation information comprising at least one suggested improvement to the updated textual content.

14. The method of claim 13 , wherein to render the annotation information over at least a portion of the webpage displayed by the web browser further comprises:

determining a type of annotation to be rendered based on the annotation information;

determining a location on the webpage over which the annotation information is to be rendered; and

rendering a representation of the annotation information based on the annotation information and the determined location.

15. A memory device storing instructions that, when executed on a processor of a data processing system, cause the data processing system to provide writing assistance features in a web browser or a native application including an embedded web browser, by:

detecting that a webpage has been rendered by the web browser;

analyzing a structure of the webpage to determine a topology of the webpage by accessing a Document Object Model (DOM) of the webpage and traversing the DOM of the webpage to identify nodes comprising the webpage to determine the topology of the webpage;

construct a model of the webpage based on the topology of the webpage, wherein the model of the webpage is configured to automatically monitor the topology of the webpage and to update the model based on detected changes to the webpage;

detect, using the model, a change in textual content of an input element of the webpage;

obtain annotation information associated with the textual content on the webpage; and

render the annotation information over at least a portion of the webpage displayed by the web browser.

16. The memory device of claim 15 , wherein to construct the model of the webpage the memory device further stores executable instructions for causing the processor to perform functions of:

identifying nodes in the DOM representing textual input elements;

constructing a subtree representing each textual input element of the webpage; and

adding the subtree to the model of the webpage.

17. The memory device of claim 16 , to construct the subtree for a respective textual input element the memory device further stores executable instructions for causing the processor to perform functions of:

generating an outline node as a root of the subtree that includes a reference to a corresponding node in the DOM that represents the respective textual input element; and

generating one or more terminal nodes that represent at least a portion of textual content included in the respective textual input element.

18. The memory device of claim 17 , wherein to construct the subtree for a respective textual input element the memory device further stores executable instructions for causing the processor to perform functions of:

dividing textual content of the textual input element into a plurality of sub-elements; and

associating each sub-element with a terminal node of the subtree.

19. The memory device of claim 18 , wherein to detect the change in the textual content of the input element of the webpage the memory device further stores executable instructions for causing the processor to perform functions of:

listening for DOM mutation events produced by the DOM of the webpage indicative of the textual content of the input element being changed responsive to user interactions with the webpage;

extracting the textual content of the input element from the DOM responsive to detecting a DOM mutation event;

dividing textual content of the textual input element into a plurality of updated sub-elements; and

associating each updated sub-element with a terminal node of the subtree.

20. The memory device of claim 19 , wherein the memory device further stores executable instructions for causing the processor to perform operations including:

generating a request that includes at least a subset of the plurality of sub-elements of the updated textual content to a remote server to obtain annotation information identifying one or more improvements to the updated textual content; and

receiving a response from the remote server that includes the annotation information, the annotation information comprising at least one suggested improvement to the updated textual content.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2020
From: CURZI, ALESSANDRO; DONOHOE, ANDREW; BIEN, DINH DOAN VAN; SULTANOV, IAN; BARNES, PAUL
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 052691/0913 →
Continuity (1)
Provisional Application 63002296 · Mar 30, 2020
Cited By (3)
US 12,498,993 US 12,536,058 US 12,682,157