Browsers are applications that display web pages. Often, when a user views a web page, she finds particular content in the web page to which she wants to draw a friend's attention. For example, she may send a friend an email message that contains a URL identifying a web page describing the careers of standout bowlers, and a recommendation to scroll down in the web page to read about Earl Anthony's amazing accomplishments.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key factors or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
A facility supporting the sharing of annotated web pages is described. The facility enables a user to specify annotations—such as highlighting annotations—each with respect to a portion of a subject web page. In response, the facility creates and stores a copy of the tag language representation of the subject web page in which custom tags represent the specified annotations. The facility also provides a special URL that can be shared with other users by the annotating user, and can be used by any of those other users to retrieve and display the stored tag language representation to view the annotations.
The inventors have identified important disadvantages in how users conventionally recommend portions of web pages to others. In particular, the inventors have noted that, if a first user emails the page's URL to a second user as described above, the following disadvantages befall the second user: (1) The second user must manually identify the portion of the document referred to by the first user. (2) The first user may not have included enough information about the referenced portion of the web page—the second user may be left wondering, for example, whether the first user was impressed by Mr. Anthony being the first pro bowler to win more than $1,000,000, or his 1981 induction into the Professional Bowlers Association Hall of Fame. (3) Between the times that the first and second user view the page, the page may have changed in a way that alters or deletes the referenced portion, preventing the second user from being able to obtain the referenced content.
The inventors have identified conventional alternatives to the URL-emailing approach, but these have their own significant disadvantages. In particular, certain browsers or browser add-ons make it possible for the first user to capture an image of the web page in its present state, and annotate that image, such as by highlighting contents, or handwriting on or near them. While this approach addresses many of the problems of the URL-emailing approach, it creates its own: this annotated image of a web page doesn't function as a web page. Links and controls of other types in the web page are inactive, text can't be selected for copying onto the clipboard for launching a search engine query, etc.
In response to this recognition, the inventors have conceived and reduced to practice a software and/or hardware facility for sharing annotated web pages in a way that maintains their character as web pages (“the facility”).
In some examples, the facility adds annotation controls to a web browser, such as controls that users of the web browser can use to highlight text spans within any web page. (While this application mainly discusses text highlighting annotations, those skilled in the art will appreciate that, in various examples, the facility manages the creation and sharing of a variety of kinds of annotations to web pages.) The facility stores a copy of the web page on a server, after adding tags to effect the highlighting. The facility provides a special URL to the “first,” highlighting user that the first user can use to share the highlighted version of the web page with other users. In some examples, in the URL field of the first user's browser, the facility replaces the original URL of the web page with the special URL generated by the facility for the annotated copy of the web page. When a second user dereferences the special URL, the second user's web browser retrieves and displays the annotated copy of the page, such that the first user's highlighting appears to the second user.
The contents of the version of the web page displayed to the second user exactly match its contents when the first user performed the highlighting, irrespective of any changes to the original web page between the highlighting by the first user and the display by the second user. Indeed, the original web page could have been deleted in the interim, and the second user will still see the version of the web page that was highlighted by the first user. While the highlighted version of the web page is displayed by the second user, it is active in the same ways as it was originally to the first user: links can be followed, text can be selected, embedded audio and video can be played, etc.
In some examples, the web page is displayed to the second user together with a “table of annotations”: a list of the instances of highlighting contained by the web page, which permits the second user to click on one of the instances and jump to the portion of the web page containing the associated highlighting. In some examples, each item in the table of annotations is a thumbnail of the highlighted text.
In some examples, the second user can proceed to add his or her own highlighting to the web page previously highlighted by the first user. In response, the facility stores a second copy of the web page, to which it has added tags incorporating the second user's highlighting, such that the second copy of the web page contains tags incorporating both the first and the second users' highlighting. The facility provides to the second user a second special URL that any user may use to access the stored version of the web page containing the first and second users' highlighting. In some examples, further versions of the web page incorporating additional annotations can be produced indefinitely, by any number of users. In some examples, the special URLs that refer to these annotated versions of the web page include an explicit version number, which can be varied by a dereferencing user to select which of the stored versions of the web page is retrieved when the special URL is dereferenced.
In some examples, the facility generates the special URLs that refer to the annotated pages using a new URL scheme different from the “HTTP:” URL scheme, such as an “ATTP:” URL scheme. This web scheme directs a web browser to send a page retrieval request to a special annotation server, enclosing the URL. When the annotation server receives such a request, it returns the augmented web page corresponding to an identifier included in the URL, such as a globally-unique identifier (“GUID”) included in the URL. In some examples, the URL also includes at least part of the original URL of the web page, such as its domain, or everything after the “HTTP:” web scheme of the original URL.
By performing in some or all of the ways described above, the facility enables users to easily highlight or otherwise annotate web pages, and share the web pages with these annotations with other users.
Also, by performing in some or all of the ways described, the facility meaningfully reduces the hardware resources needed to share annotations to web pages, including, for example: reducing the amount of storage space needed to store related information; and reducing the number of processing cycles needed to perform this process. This allows programs making use of the facility to execute on computer systems that have less storage and processing capacity, occupy less physical space, consume less energy, produce less heat, and are less expensive to acquire and operate. Also, such a computer system can perform annotation sharing with less latency, producing a better user experience and allowing users to do a particular amount of work in less time.
While various examples of the facility are described in terms of the environment outlined above, those skilled in the art will appreciate that the facility may be implemented in a variety of other environments including a single, monolithic computer system, as well as various other combinations of computer systems or similar devices connected in various ways. In various examples, a variety of computing systems or other different devices are used as clients, including desktop computer systems, laptop computer systems, automobile computer systems, tablet computer systems, smart phones, personal digital assistants, televisions, cameras, etc.
At 303, the facility uses an HTTP request to retrieve the HTML web page source for the page that is the subject of the URL from the Internet domain included in the URL. A section of the live HTML for a sample page retrieved by the facility at 303 is shown below in Table 1.
It can be seen that lines 2-3 and 6-7 of Table 1 each contain a <div> tag specifying text to be displayed in the web page. Further, lines 4-5 of Table 1 contain an <a> tag specifying a link to a related web page, as well as associated text.
At 304, the facility adds to some or all of the tags in the HTML retrieved at 303 GUID key/value attribute pairs. In some examples, the GUIDs used by the facility are large numbers or a long alphabetic or alphanumeric strings selected at random in a way that ensures that they are reasonably unique. In particular, the facility generates a single GUID corresponding to the user's retrieval of the entire web page, and an additional GUID for each altered HTML tag to uniquely identify it in the web page. Table 2 below shows the addition at 304 performed with respect to the HTML shown in Table 1.
It can be seen that the facility has added a GUID key/value attribute pair to each of the <div> tags shown in lines 2-3 and 6-7. In each of these added key/value attribute pairs, the key/value is the same GUID, which identifies the user's retrieval of the web page: 4560-2932-4457-2295. It can further be seen that the two <div> tags have different attribute value GUIDs, such that the value 4568-7489-1223-5321 uniquely identifies the <div> tag shown in lines 2-3, while the 5711-8612-6754-3541 value identifies the <div> tag shown in lines 6-7.
At 305, the facility parses the HTML to construct a Document Object Model (“DOM”) for the web page, in a manner conventionally used by web browsers. At 306, the facility uses the DOM constructed at 305 to display the web page. At 307, the facility displays controls for adding highlighting annotations to the web page and saving these highlighting annotations.
At 308, the facility branches on a user action performed with respect to the browser: if the action is to select content in the web page and activate a highlighting control, then the facility continues at 309; if the action is to activate the save control, then the facility continues at 311; and if the action is to select annotations from a table of annotations displayed by the browser, then the facility continues at 316.
Returning to
It can be seen that the highlighted content indication identifies the <div> tag shown in lines 2-3 of Table 2 by its reference in line 3 to the same GUID key/value pair. Table 3 further contains, in an “offsets” attribute, a range in the text attached to this <div> tag that is subject to the highlighting, namely from the first character to the fiftieth character of this text in line 6. Also, line 7 indicates the color “red,” corresponding to the color selected—by choosing highlighting control 612.
At 310, the facility displays the content as highlighted by the user input. After 310, the facility continues at 308 to process the next user action.
Returning to
Line 2 of Table 4 contains an external reference to a CSS style sheet incorporated by reference into the HTML of the web page. The facility resolves this external reference at 805 by retrieving the referenced “theme.css” file, and replacing line 2 in Table 4 within the HTML file with the retrieved contents of the CSS style sheet. The facility performs similarly to resolve the external script reference shown in line 3 of Table 4.
At 706, the facility adds custom HTML tags to reflect the highlighting indicated by the highlighting indications received in the upload request. Table 5 below shows an example of the addition of these custom tags at 706.
By comparing Table 5 to Table 2, it can be seen that the facility has added a custom tag to the <div> tag shown in lines 2-3 of Table 2, resulting in lines 2-4 of Table 5. In particular, the custom tag, which begins near the end of line 1 of Table 5, has a name corresponding to a newly-generated GUID (40564-8482-4564-6546) and specifies an in-line style that has only one rule: Background Color (red). The tag spans the first 50 characters of the text enclosed by the <div> tag, which corresponds to the text selected by the user in
At 707, the facility stores a new entry in the annotation table that contains the GUID received in the upload request, the annotation version number determined at 703 or 704, the HTTP URL contain an receive upload request, and the received HTML for the web page as further modified at 805-806.
While
Returning to
Those skilled in the art will appreciate that the acts shown in
Returning to
After the first user receives the ATTP URL identifying the first user's annotations, the first user can share these annotations with any other user by sending them the ATTP URL. Any of these other users can de-reference the ATTP URL by submitting it to a browser, such as by typing it or pasting it into a URL Field, following a link encoding the ATTP URL provided by the first user, etc. The facility processes the receipt of this ATTP URL from a second user as shown in
In some examples (not shown), the facility only displays the ATTP URL in the URL field while the URL field is selected by the user, such as by clicking on the URL field, enabling the ATTP URL to be easily copied by the user for sharing with other users. At all other times, the facility displays the web page's HTTP URL in the URL field, deepening the annotated web page's connection to the original web page on which it is based. In some cases, the version of the web page's HTTP URL displayed in the URL field is simplified, such as by omitting its “HTTP:” URL scheme.
Returning to
The facility also displays the highlighting and save controls at 307. At 308, when the user selects an annotation instance from the table of annotations, the facility continues at 316. At 316, the facility scrolls to the selected annotation. After 316, the facility continues at 308 to process the next user action.
This annotation process can proceed through any number of iterations, including both new annotating users and repeating annotating users. Furthermore, the user can explicitly request any version of the annotations by specifying the corresponding version number after the “@” in the ATTP URL. Also, a user can begin a separate thread of annotations to the same web page by loading the web page using its HTTP URL, then making and saving one or more annotations.
In some examples, the facility provides a method in a computing system for storing annotations to a web page, comprising: retrieving a tag language representation of the web page from a web server associated with the web page; displaying a rendered version of the retrieved tag language representation of the web page; receiving input from a first user specifying an annotation with respect to a distinguished point in the rendered version of the retrieved tag language representation of the web page; adding at least one custom tag representing the specified annotation to a copy of the retrieved tag language representation of the web page at a point in the copy of the retrieved tag language representation of the web page corresponding to the distinguished point in the rendered version of the retrieved tag language representation of the web page; and storing the copy of the retrieved tag language representation of the web page to which the at least one custom tag was added, in connection with a shareable identifier of the specified annotation.
In some examples, the facility provides one or more instances of computer-readable media collectively having contents configured to cause a computing system to perform a method for storing annotations to a web page, the method comprising: retrieving a tag language representation of the web page from a web server associated with the web page; displaying a rendered version of the retrieved tag language representation of the web page; receiving input from a first user specifying an annotation with respect to a distinguished point in the rendered version of the retrieved tag language representation of the web page; adding at least one custom tag representing the specified annotation to a copy of the retrieved tag language representation of the web page at a point in the copy of the retrieved tag language representation of the web page corresponding to the distinguished point in the rendered version of the retrieved tag language representation of the web page; and storing the copy of the retrieved tag language representation of the web page to which the at least one custom tag was added, in connection with a shareable identifier of the specified annotation.
In some examples, the facility provides a computing system for storing annotations, the computing system comprising: at least one processor; and memory having contents whose execution by the at least one processor causes the computing system to perform a method, the method comprising: retrieving a tag language representation of the web page from a web server associated with the web page; displaying a rendered version of the retrieved tag language representation of the web page; receiving input from a first user specifying an annotation with respect to a distinguished point in the rendered version of the retrieved tag language representation of the web page; adding at least one custom tag representing the specified annotation to a copy of the retrieved tag language representation of the web page at a point in the copy of the retrieved tag language representation of the web page corresponding to the distinguished point in the rendered version of the retrieved tag language representation of the web page; and storing the copy of the retrieved tag language representation of the web page to which the at least one custom tag was added, in connection with a shareable identifier of the specified annotation.
In some examples, the facility provides one or more instances of computer-readable media collectively having contents configured to cause a computing system to perform a method for handling a web page annotation URL scheme, the method comprising: receiving a URL qualified by the web page annotation URL scheme, the web page annotation URL scheme being distinct from the HTTP URL scheme; sending at least a portion of the received URL to an annotation server in an annotation server domain, neither the annotation server nor the annotation server domain being identified in the received URL; receiving from the annotation server source for a web page incorporating one or more user annotations; and using a browser to display, from the received source, a rendered version of the web page incorporating the user annotations.
In some examples, the facility provides a method in a computing system for handling a web page annotation URL scheme, comprising: receiving a URL qualified by the web page annotation URL scheme, the web page annotation URL scheme being distinct from the HTTP URL scheme; sending at least a portion of the received URL to an annotation server in an annotation server domain, neither the annotation server nor the annotation server domain being identified in the received URL; receiving from the annotation server source for a web page incorporating one or more user annotations; and using a browser to display, from the received source, a rendered version of the web page incorporating the user annotations.
In some examples, the facility provides a computing system for handling a web page annotation URL scheme, the computing system comprising: at least one processor; and memory having contents whose execution by the at least one processor causes the computing system to perform a method, the method comprising: receiving a URL qualified by the web page annotation URL scheme, the web page annotation URL scheme being distinct from the HTTP URL scheme; sending at least a portion of the received URL to an annotation server in an annotation server domain, neither the annotation server nor the annotation server domain being identified in the received URL; receiving from the annotation server source for a web page incorporating one or more user annotations; and using a browser to display, from the received source, a rendered version of the web page incorporating the user annotations.
In some examples, the facility provides a computing system for providing a web page annotation user interface, the computing system comprising: at least one processor; and memory having contents whose execution by the at least one processor causes the computing system to perform a method, the method comprising: receiving source for a subject web page, the source specifying both visual content of the subject web page, and a traversable link to an additional web page; displaying a rendered version of the received source for the subject web page; receiving first user input specifying an annotation to the subject web page and a distinguished point in the displayed rendered version of the received source for the subject web page; after receiving the first user input, receiving second user input traversing the link to the additional web page; and in response to receiving the second user input: receiving source for the additional web page; and displaying a rendered version of the received source for the additional web page.
In some examples, the facility provides a method in a computing system for providing a web page annotation user interface, comprising: receiving source for a subject web page, the source specifying both visual content of the subject web page, and a traversable link to an additional web page; displaying a rendered version of the received source for the subject web page; receiving first user input specifying an annotation to the subject web page and a distinguished point in the displayed rendered version of the received source for the subject web page; after receiving the first user input, receiving second user input traversing the link to the additional web page; and in response to receiving the second user input: receiving source for the additional web page; and displaying a rendered version of the received source for the additional web page.
In some examples, the facility provides one or more instances of computer-readable media collectively having contents configured to cause a computing system to perform a method for providing a web page annotation user interface, the method comprising: receiving source for a subject web page, the source specifying both visual content of the subject web page, and a traversable link to an additional web page; displaying a rendered version of the received source for the subject web page; receiving first user input specifying an annotation to the subject web page and a distinguished point in the displayed rendered version of the received source for the subject web page; after receiving the first user input, receiving second user input traversing the link to the additional web page; and in response to receiving the second user input: receiving source for the additional web page; and displaying a rendered version of the received source for the additional web page.
In some examples, the facility provides one or more memories collectively storing an annotation table data structure, the data structure comprising: a plurality of entries each representing a set of annotations performed with respect to a web page, each entry comprising: first information uniquely identifying the set of annotations; and a copy of the web page with respect to which the set of annotations was performed, retrieved from a web server of the web page at a time before any of the annotations of the set of annotations was performed, the copy of the web page having been modified to incorporate each of the annotations of the set of annotations, such that the contents of the data structure can be used to return and display a copy of a web page having a particular set of annotations based upon information uniquely identifying the set of annotations.
It will be appreciated by those skilled in the art that the above-described facility may be straightforwardly adapted or extended in various ways. While the foregoing description makes reference to particular embodiments, the scope of the invention is defined solely by the claims that follow and the elements recited therein.