Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHODS AND SYSTEMS FOR CROSS-DEVICE WEBPAGE REPLICATION
Document Type and Number:
WIPO Patent Application WO/2016/138394
Kind Code:
A1
Abstract:
Methods and systems for replicating a marked-up webpage across various computing devices so that the marked-up webpage appears substantially as displayed on the originator device are disclosed. The present disclosure provides methods, systems and non-transitory machine-readable medium storing instructions for sharing a marked-up webpage from an originator device with a recipient device. A webpage having one or more objects is generated on the originator device. When displayed on a display associated on the originator device, the webpage has an originator layout. The originator device has an originator device memory and an originator device processor coupled to the originator device memory.

Inventors:
CHEUNG KAYEUNG (US)
SHEN STEVEN LEE (US)
Application Number:
PCT/US2016/019800
Publication Date:
September 01, 2016
Filing Date:
February 26, 2016
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
GRAPHITI INC (US)
International Classes:
G06F40/143
Foreign References:
US20110066957A12011-03-17
US20140173393A12014-06-19
US20120010995A12012-01-12
US20140067934A12014-03-06
US20130132814A12013-05-23
Attorney, Agent or Firm:
KUO, Erica W. (112 W. 34th Street 18th Floo, New York New York, US)
Download PDF:
Claims:
IN THE CLAIMS

We claim:

1. A method for sharing a marked-up webpage from an originator device with a recipient device, the method comprising:

generating a webpage on the originator device, the webpage having one or more objects and an originator layout when displayed on a display associated with the originator device, wherein the originator device has an originator device memory and an originator device processor coupled to the originator device memory, the originator device memory storing a program code module and the originator device processor executing the program code module to identify a context on the originator device, the context including one or more viewport properties of the originator device;

identifying a target object from among the one or more objects of the webpage, the processor of the originator device executing the program code module to create a locator list that references the target object;

applying a mark-up to the target object, the processor of the originator device executing the program code module to save the mark-up;

selecting a recipient; and

transmitting the webpage, the mark-up, the locator list and the context including one or more originator device viewport properties to a recipient device associated with the selected recipient, wherein the recipient device has a recipient device memory and a recipient device processor coupled to the recipient device memory, the recipient device memory storing a program code module and the recipient device processor executing the program code module to modify the recipient device viewport properties to match the transmitted originator device viewport properties, to identify the target object on the transmitted webpage, and to display the webpage and mark-up with a recipient layout on a display associated with the recipient device, wherein the recipient layout substantially matches the originator layout.

2. The method of claim 1, wherein generating a web age on the originator device further comprises:

requesting URL HTML data from a web server; and

capturing and saving a screen shot of the webpage when generated on the originator device.

3. The method of claim 2, wherein transmitting the webpage, the mark-up, the locator list and the one or more originator device viewport properties to a recipient device further comprises:

transmitting the screen shot, wherein the recipient device processor executing the program code module to display the screen shot and mark-up with the recipient layout that substantially matches the originator layout.

4. The method of claim 2, further comprising:

embedding a URL with the screen shot, wherein the URL specifies the webpage' s location on the web server.

5. The method of claim 4, further comprising:

transmitting the screen shot with the embedded URL, wherein the recipient device processor executing the program code module to display the screen shot and mark-up with the recipient layout that substantially matches the originator layout.

6. The method of claim 5, further comprising:

generating a live webpage on the recipient device using the embedded URL, wherein the live webpage is generated by requesting URL HTML data from the web server.

7. The method of claim 1, wherein the one or more viewport properties are selected from the group consisting of: display screen resolution, display screen aspect ration, display screen size, display screen pixel count, display screen state, and user agent.

8. A non-transitory machine-readable medium storing instructions that, when executed by a machine, cause the machine to perform operations comprising:

identifying a context on an originator device having a webpage generated thereon, the webpage having one or more objects thereon and an originator layout when displayed on a display associated with the originator device, and the context including one or more viewport properties of the originator device;

generating a locator list that references a target object, the target object having been identified from among the one or more objects on the webpage;

saving a mark-up applied to the target object;

transmitting the webpage, the mark-up, the locator list and the context including one or more originator device viewport properties to a recipient device;

modifying the recipient device viewport properties to match the transmitted originator device viewport properties;

identifying the target object on the transmitted webpage; and

replicating the webpage and mark-up with a recipient layout on a display associated with the recipient device, wherein the recipient layout substantially matches the originator layout.

9. The non-transitory machine-readable medium of claim 8, storing instructions that, when executed by a machine, cause the machine to perform operations further comprising: capturing and saving a screen shot of the webpage generated on the originator device, wherein the webpage is generated by requesting URL HTML data from a web server; and embedding a URL with the screen shot, wherein the URL specifies the webpage' s location on the web server.

10. A system for sharing a marked-up webpage from an originator device with a recipient device, the system being accessible via a network by the originator device and the recipient device, the system comprising:

a computer memory, the computer memory storing computer-executable instructions; a processor coupled to the computer memory and configured to execute the computer- executable instructions stored on the computer memory to:

identify a context on the originator device having a webpage generated thereon, the webpage having one or more objects thereon and an originator layout when displayed on a display associated with the originator device, and the context including one or more viewport properties of the originator device;

generate a locator list that references a target object, the target object having been identified from among the one or more objects on the webpage; save a mark-up applied to the target object;

transmit, via the network, the webpage, the mark-up, the locator list and the context including one or more originator device viewport properties to the recipient device;

modify the recipient device viewport properties to match the transmitted originator device viewport properties;

identify the target object on the transmitted webpage; and

replicate the webpage and mark-up with a recipient layout on a display associated with the recipient device, wherein the recipient layout substantially matches the originator layout.

11. The system of claim 10, wherein the processor is further configured to execute the computer-executable instructions stored on the computer memory to:

capture and save a screen shot of the webpage generated on the originator device, wherein the webpage is generated by requesting, via the network, URL HTML data from a web server; and

embedding a URL with the screen shot, wherein the URL specifies the webpage' s location on the web server.

Description:
METHODS AND SYSTEMS FOR CROSS-DEVICE WEBPAGE REPLICATION

[0001] A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawings that form a part of this document: Copyright Graphiti Inc. 2016, All Rights Reserved.

RELATED APPLICATIONS

[0002] The application claims priority benefits of U.S. Provisional Applications Nos.

62/121,411 entitled, "System and Method for Displaying Marked-Up Content as a Storyline," 62/121,414 entitled, "Computer-Implemented Drawing Tools and Social Media Uses Thereof," 62/121,419 entitled, "Cross-Device Web Viewport Replication," and 62/121,426 entitled, "System and Method for Creating and Using an Embedded Screen Shot," each of which was filed on February 26, 2015, and each of which is incorporated herein by reference in its entirety.

TECHNICAL FIELD

[0003] The present disclosure relates to systems and methods for cross-device webpage replication.

BACKGROUND

[0004] Social media depend on mobile and web-based technologies to create highly interactive platforms through which users can create, share, exchange and modify content. However, when a user (also referred hereinto as an originator) shares a webpage with a recipient, the recipient may not see the webpage in the same way as the user intended. Most websites today are built responsively to provide an optimal viewing experience across various devices (from desktop computer monitors to mobile phones). Responsive web design adapts a webpage layout to the viewing environment by allowing dynamic resizing, panning, scrolling, etc. When the originator and the recipient have different devices, the webpage may be displayed on the originator device with one layout and on the recipient device with a different layout. Also, many webpages, such as webpages for blogs or news organizations, continually have new content added or are continually updated, so the webpage seen and shared by the originator may not have the same content when viewed by the recipient at a later point in time.

[0005] When web content is shared among users, it may be important to provide a common point of reference for the shared content.

SUMMARY

[0006] The present disclosure provides methods, systems and non-transitory machine- readable medium storing instructions for sharing a marked-up webpage from an originator device with a recipient device. A webpage having one or more objects is generated on the originator device. When displayed on a display associated on the originator device, the webpage has an originator layout. The originator device has an originator device memory and an originator device processor coupled to the originator device memory. The originator device memory stores a program code module and the processor executes the program code module to: identify a context on the originator device, where the context includes one or more viewport properties of the originator device; to create a locator list that references a target object that is identified from among the one or more objects on the webpage; and to save a mark-up that is applied to the target object. After a recipient is selected, the webpage, mark-up, locator list, and context (including one or more originator viewport properties) are transmitted to a recipient device associated with the recipient. The recipient device has a recipient device memory and a recipient device processor coupled to the recipient device memory. The recipient device memory stores a program code module and the recipient device processor executes the program code module to: modify the recipient device viewport properties to match the transmitted originator viewport properties; to identify the target object on the transmitted webpage; and to display the webpage and the mark-up with a recipient layout on a display associated with the recipient device, where the recipient layout substantially matches the originator layout. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] For a better understanding of the nature, objects, and processes involved in this disclosure, reference should be made to the detailed description taken in conjunction with the accompanying drawings, in which:

[0008] FIGURE 1 illustrates a webpage having an originator layout on an originator device;

[0009] FIGURE 2 illustrates the webpage from Fig. 1 with objects identified and mark-ups applied to target objects in the originator layout;

[0010] FIGURE 3 illustrates a recipient layout of a recipient device displaying the mark-ups associated with the target objects from the webpage as shown in Fig. 2, generated by emulating the originator device's viewport properties according to one implementation of the present disclosure;

[0011] FIGURE 4 is a process flow diagram illustrating some steps in generating the markups on the target object displayed on the originator device and replicating the mark-ups on the recipient device incorporating some steps of a cross-device web viewport replication according to one implementation of the present disclosure;

[0012] FIGURE 5 is a process flow diagram illustrating some steps of an Anchor

Identification Strategy (AIS) determining unique identifiers for the target object; and

[0013] FIGURE 6 is a diagram illustrating aspects of a system showing features consistent with at least one implementation of the present disclosure.

DETAILED DESCRIPTION

[0014] Applicant's previously filed U.S. patent application number 14/515,254, filed October 15, 2014 and entitled, "Identifying, Marking Up, and Reconstituting Elements for Content Sharing" ("the '254 application"), discusses systems and methods that allow a user to display a webpage on an originator device, apply a mark up to a portion or an object within the webpage and then share the marked-up webpage to be displayed on a recipient device, where the marked-up webpage may be viewed substantially as the user intended it to be viewed. An Anchor Identification Strategy (AIS) can be employed that uses identifying features of the webpage to apply the mark-up accurately between the originator device and the recipient device. The '254 application, including but not limited to the terms and definitions used therein, is incorporated by reference in its entirety into this present disclosure.

[0015] Figure 1 illustrates one implementation of an originator device 100, having a webpage 102 with an originator layout 104. The originator device 100 shown in Fig. 1 is a personal computer (PC), with Fig. 1 illustrating the webpage 102 shown on the monitor of the PC. The originator device 100 may be any sort of electronic or computational device that displays information, e.g. a smartphone, a kiosk, a tablet, a data terminal, a touch display, or a scanner.

[0016] The webpage 102 is shown as one example of content that may be displayed on the originator device 100. A "webpage" according to the present disclosure may refer to any sort of item, object, entity, instance, content or data capable of being displayed or otherwise presented on an originator device, and includes, for example, a desktop display, an individual image, a graphical user interface, or a time-varying data stream (e.g., an audio or video playback or feed). A "webpage" may be generated by the originator device (e.g. , a photo taken by a camera on the originator device) or may be received by the originator device from a web server via a network (e.g. , "live" content from a website).

[0017] The originator layout 104 is the arrangement of displayed information on the originator device 100. In one implementation, the originator layout 104 is the arrangement and kinds of objects on the webpage 102. The originator layout 104 may be any group of objects, information, or data, e.g. titles 112, images 114, text bodies 116, or advertisements 118. The originator layout 104 may be changed periodically due to updates in the content, resizing of windows, or other changes initiated by the user or the provider of the webpage 102 content. The originator layout 104 may be defined in many ways, e.g. as a collection of coordinates, mappings, distances, levels, layers, or depths. In time-varying content such as a video or audio playback, the originator layout 104 may also refer to time-sequences within the specific playbacks.

[0018] Figure 2 illustrates the webpage 102 with objects 200, 202 identified in the originator layout 104. Each of the elements on the webpage 102 may be associated with a specific object having an object type. As shown in Fig. 2, the elements on the webpage may be associated with a particular object. For example, the title 112, the two images 114 and the caption of one image, the text body 116, and ads 118 each may be associated an object 200, 202. The type of object need not be tied to the function of the object. For example, the title 112 may be of any object type e.g. text box, an image, a video, or any other sort of computer- generated object.

[0019] By defining elements of the webpage 102 as a collection of objects 200, 202, the objects 200, 202 may be easily moved about, resized, and otherwise manipulated as desired to display the desired web content. In this way, the locations of the objects 200, 202 define the originator layout 104. As the objects 200, 202 are moved, resized, or otherwise manipulated on the originator device 100, the originator layout 104 is also changed. The term "object" as used in the present disclosure not only includes the abstract idea of an object, but also objects, elements, or instances that may be used in computer programs, e.g. C, C++, Java, Python, HTML, XML, etc. The objects 200, 202 may also be entries in collection of data, e.g. entries or elements in a database, table, array, or list.

[0020] Figure 2 also illustrates mark-ups 302 applied to target objects 202 in the originator layout. A user may desire to call attention, annotate, or otherwise mark up the webpage 102, usually in reference to one or more of the objects 200, 202 on the webpage 102. In time- varying content, the mark-up 302 may be used to call attention to the object 200 at a particular time, e.g. popping up a window at a certain point of an audio playback, circling a performer being displayed in a video clip at a particular time, etc.

[0021] An input device 210 may be used to add, render, represent, or otherwise select a target object 202. The input device 210 may be any sort of device capable of receiving user input, e.g. a mouse, trackpad, touchscreen, stylus or the like. The object desired to be marked up is defined to be the target object 202 and may be selected from the objects present in the webpage 102. The target object 202 may be isolated from the other objects 200 by either the AIS or another computer program. The target object 202 may have one or more attributes that describe the type, location, or other identifying information about the target object 200, e.g. tags, identifiers, query handlers, metadata, or UID's. The AIS uses the attributes available for each of the objects 200 to, when possible, uniquely identify the target object 202 being marked up. The AIS, and attributes of the target object 202 used by the AIS, are presented in greater detail in the discussion of Fig. 5.

[0022] As shown in Fig. 2, there may be multiple mark-ups 302 applied to the multiple target objects 202 in the originator layout 104; alternatively, multiple mark-ups, or any combination or number of mark-ups desired by the user, may be applied to the same target object. Any type of the mark-up 302, e.g. a freehand circle, highlighting of text, an arrow callout, an embedded sound or video file, an image, or any kind of user-selected item may be applied to a target object 202.

[0023] Figure 3 illustrates a recipient layout 310 of a recipient device 300 displaying the mark-ups 302 associated with the target objects 202 from the webpage 102 as shared by the originator device. The recipient device 300 shown in Fig. 3 is a smart phone. Identifying information about the target objects 302 transmitted by the originator device 100 to the recipient device 300 allows the AIS to replicate the mark-ups 302. Replicating a marked-up webpage to convey to the recipient the information in the way the user intended may be particularly challenging when the recipient device is different than the originator device. In such cases, the mark-up may not display in the same location relative to the originator layout when viewed on the recipient device.

[0024] It has been found that one or more viewport properties of the recipient device may be matched to those of the originator device in order to better replicate on the recipient device the marked-up webpage as it was created on the originator device and intended by the user for the recipient to see, for example where a mark-up is associated with a specific point of a target object (such as a specific point of an image, or a specific body of text) that is part of the webpage. As shown in Fig. 3, by matching the viewport properties of the originator device on the recipient device according to one implementation of the present disclosure, the recipient layout 310 essentially matches the originator layout 104, and the mark-ups 302 appear in the same location relative to the target objects 202 on the recipient device 300 as on the originator device 100.

[0025] By matching one or more properties of the recipient device viewport to those of the originator device, the efficacy of identifying anchors for a target object on the recipient device may be enhanced, particularly when the webpage includes "live" content from a website that may change between the time the originator device creates and transmits the marked-up webpage and the time the recipient device displays the marked-up webpage.

[0026] In another implementation of the present disclosure, a screen shot of the webpage may be captured and saved when generated on the originator device and a URL that specifies the webpage' s location on a web server embedded with the screen shot. A "screen shot" as used herein may include the entire webpage, not just the portions thereof that are visible on the viewport of the originator device. When the webpage is transmitted to the recipient device, in some implementations, the saved screen shot with embedded URL may be transmitted to the recipient device; in this way, the recipient may view the webpage as it was displayed on the originator device, even if the original webpage (as it resides on the web server) has additional or changed content. The recipient may use the URL embedded with the saved screen shot to launch the live webpage without having to open a new window or a new browser. For example, to launch the live webpage, the recipient may tap anywhere on the saved screen shot as it appears on the display screen of the recipient device, or click using a mouse or other input device.

[0027] Figure 4 is a process flow diagram that illustrates some steps of generating a mark-up on a target object displayed on an originator device and replicating the mark-up on a recipient device using an implementation of a cross-device viewport replication method according to the present disclosure. The steps shown in Fig. 4 may be implemented using an embodiment of a system shown in Figure 6, discussed below, and information generated by performing the steps of Fig. 4 may be stored in and/or transmitted via a network between an originator device and a recipient device and/or via a relay server.

[0028] A webpage is generated on an originator device, as shown in step 400. The webpage may be generated by any means, e.g., by downloading from a web server, generated by the originator device, generated by a user, etc.

[0029] At step 402, the context on the originator device is identified. The context may include information about the originator device and the generated webpage, such as the type of device (e.g., PC, smart phone, tablet, etc.), the type of web browser being used to display the webpage, the URL of the webpage, etc. The context may also include information about objects in the webpage, e.g. attributes and other identifying information about objects (ID, tag, class, SRC, HREF, text strings, character offsets, etc.). The context may also include information about the originator layout, such as what is displayed on the originator device and the location of the objects displayed on the originator device (e.g. , coordinates, depth, metadata, or other reference information). The context may also include one or more viewport properties of the originator device, such as information about the originator device's display screen metrics (resolution, pixel, aspect ratio, screen size, etc.), display state, user agent, etc.

[0030] At step 404, a mark-up is added to an object and displayed on the originator device. The object receiving the mark-up is defined to be the target object.

[0031] At step 406, the AIS uses the context to identify the target object from the objects present on the webpage displayed on the originator device. Examples of the methods by which the AIS may identify the target object from the objects are presented in the discussion of Fig. 5, below. When the AIS is initiated, one or more viewport properties of the originator device are stored, as shown at step 408, and a locator list that references the target object is created, as shown at step 410. The locator list may include any identifiers or attributes found by the AIS about the target object. The locator list may be any sort of list or computer generated structure capable of storing information to identify the target object, e.g. a database, array, linked list, object, text file, spreadsheet or the like.

[0032] At step 411, a screen shot of the webpage as generated on the originator device is captured and saved. In some implementations, where the webpage is generated from URL HTML data requested from a web server, the URL that specifies the webpage' s location on a web server may be embedded with the screen shot.

[0033] At step 412, a recipient is selected from, e.g. , a list, a database, social network or other group of contacts.

[0034] At step 414, the locator list, originator device' s viewport properties and screen shot are transmitted to a recipient device associated with the selected recipient. The transmission of this information may occur by any means known to one skilled in the art, e.g. , wireless network, cellular network, LAN, WLAN, distributed network or the like, and may go through any number of computers, servers, or relays before reaching the recipient device. In some embodiments, the transmission may also be directly from the originator device to the recipient device.

[0035] At step 416, the recipient device's viewport properties are modified to match the originator device's viewport properties. In some implementations, where the webpage is a live webpage that is requested using the website URL HTML data, as the webpage is provided to the recipient device at step 418, the recipient device viewport emulates the originator device's viewport properties by, for example, modifying webpage data and/or transforming, translating, scaling, etc. of the recipient device viewport (step 420). In this way, the webpage is displayed on the recipient device with essentially the same layout as displayed on the originator device.

[0036] The context and target object are identified on the recipient device at steps 422 and 424, respectively. In some implementations, for example where the target object is not identified on the live webpage provided at step 418, the screen shot may be displayed using the recipient viewport emulating the originator viewport properties.

[0037] At step 426, the mark-up is applied to replicate the marked-up webpage on the recipient device.

[0038] Figure 5 is process flow diagram illustrating one implementation of an AIS determining unique identifiers for the target object, as discussed above in Fig. 4 with reference to step 406. The AIS may be a computer program or a computer program module that may be executed on any machine capable of executing machine-readable instructions, e.g. computer, mobile device, smartphone, tablet, kiosk, server, mainframe computer or the like. The AIS determines, to the extent possible, a list of unique or limiting identifiers for the target object. The more unique or limiting the identifiers associated with the target object, the more accurately the target object will be able to be identified on the recipient device. The webpage may also be more abstractly be referred to a Document Object Model (DOM) to express the layout of the webpage as a hierarchy of related objects. While Fig. 5 refers to elements, the term "element" and "object" are used interchangeably to represent what is known, to one skilled in the art of object-oriented programming, as an object. Furthermore, when referring to "parent" and "child," this may be defined to include reference to any hierarchical data e.g. trees, arrays, or networks. They may also refer to an inheritance relationship, e.g. a child object inheriting the functions of the parent object that may be included in any instances of the child object.

[0039] The process loop illustrated in Fig. 5 begins at block 500 with an originator selecting content displayed on the originator device, which may be the webpage having at the least one object. The manner of selecting the content may be any method or means of isolating content from the at least one object, e.g. clicking, highlighting, circling, cropping, applying a call-out or the like. At block 502, the system identifies a target object from the at least one object on the webpage. At block 504, the system creates a countElements object having a tag attribute and the countElements object is pushed onto a locator list. The countElements object is a counting object that contains information among, at least, the tag attribute and a count which describes the location of the target object in the hierarchy of the at least one object. At block 506, the system saves the locator list based upon the countElements object not having a parent element.

[0040] In some implementations, in block 508 the system determines (or executes a query) whether the target object has a parent element. The target object may, in some cases, be able to be identified based upon the relationships between the target object and any identified parent objects or child objects. For example, even with the lack of all other identifying information, if the target object has three parent objects and two child objects, and the same relationship, with another object, is uniquely found on the recipient device, then it may be stated with a high degree of certainty that the two objects correspond to each other. In block 510 the system gets the parent element based upon the target object having the parent element. The steps described in blocks 504 and 508 are repeated based upon the target object having the parent element. Additional steps, such as the ones described below, may be added between blocks 510 and 504. These steps also repeat in the appropriate sequence following the execution of block 510.

[0041] In some implementations, the system determines (or executes queries) which, if satisfied, determine unique identifiers that may be used to locate the target object in the webpage as displayed on the recipient device. The implementations described herein may be combined in any way to provide unique identifying information. For example, an identifier such as a text string "Hello Bob" may be found on a webpage displayed on an originator device, and may be unique on the originator device. There may also be a second identifier found associated with that text string such as an UID for the text box in which the text string is located. When locating the target object in the webpage as displayed on the recipient device, there may be two instances of the string "Hello Bob", but only one of them present in a text box which has the same UID as that found on the originator device. This example illustrates the importance of having multiple determinations of identifying information for defining the target object uniquely. Additional implementations, which utilize alternate determinations similar to the above example, are described below.

[0042] In some implementations, in block 512 the system determines (or executes a query) if the target object has an ID attribute. In block 514 the system creates a unique object, and sets an ID attribute in the unique object based on the existence of the target object having an ID attribute. In block 516, the system pushes the unique object onto the locator list. Again, in block 506, the system saves the locator list.

[0043] In some implementations, at block 520 the system determines (or executes a query) if the target object has a tag attribute, a name attribute, and/or a class attribute. In block 522 the system sets a tag attribute, a name attribute, and a class attribute, in the unique object, based upon the target object having the tag attribute, the name attribute, and the class attribute or any combination thereof. The combination of the three attributes may allow the target object to be uniquely identified. In block 516 the system pushes the unique object onto the locator list. Again, in block 506, the system saves the locator list.

[0044] In some implementations, in block 524 the system determines (or executes a query) if the target object has a SRC attribute and/or an HREF attribute. In block 526 the system queries (or executes a query) if the target object has a unique SRC attribute and/or a unique HREF attribute. In block 528 the system sets an SRC attribute and/or an HREF attribute in the unique object based upon the target object having a unique SRC attribute and/or HREF attribute. Block 516 pushes the unique object onto the locator list. Again, in block 506, the system saves the locator list.

[0045] In some implementations, in block 530 the system sets a limiter attribute in the countElements object to be the SRC attribute and/or the HREF attribute of the target object based upon the target object having the SRC attribute and/or the HREF attribute, wherein the SRC attribute and/or the HREF attribute is not unique.

[0046] In some implementations, in block 532 the system determines (or executes a query) if the target object has a text attribute. In block 534 the system determines (or executes a query) if the target object has a unique text attribute and/or a unique offset attribute. In block 536, the system sets a text attribute and/or an offset attribute in the unique object based upon the existence of the target object having a unique text attribute and/or unique offset attribute. In block 516 the system pushes the unique object onto the locator list. Again, in block 506, the system saves the locator list.

[0047] In some implementations, in block 538 the system sets a limiter attribute in the countElements object to be the text attribute and/or the offset attribute of the target object based upon target object having the text attribute and/or the offset attribute, wherein the text attribute and/or the offset attribute is not unique.

[0048] In some implementations, in block 540 the system determines (or executes a query) if the target object has a child object with a child ID. Block 542 sets a child ID attribute and a child depth attribute in the unique object based on the target object having a child object, wherein the child object has a child ID. In block 516 the system pushes the unique object onto the locator list. Again, in block 506, the system saves the locator list.

[0049] Figure 6 is a diagram illustrating aspects of one embodiment of a system showing features consistent with implementations of the current subject matter. The above-described methods may be executed on system of linked components. The embodiment shown in Fig. 6 includes a web server 600, a relay server 700, an originator device 100 and a recipient device 300, each connected to the other via a network 604 over which data may be transmitted and shared.

[0050] The web server 600 as shown in Fig. 6 includes a webpage 102 stored in a computer memory 602 of the web server 600, wherein the webpage 102 has the at least one object 200.

[0051] The originator device 100 shown has a copy of the webpage 102 stored in a computer memory 120 of the originator device 100, wherein the copy of the webpage 102 has a target object 202 identified and a mark-up 302 applied. The recipient list 610, a copy of the Anchor Identification Strategy (AIS) 608, and locator list 612 may also be stored in the computer memory 120 of the originator device 100. As discussed above, the locator list 612 may contain the unique object 614 and the limiter object 616. The originator device viewport properties 618 and a screen shot 620 of the webpage as it was displayed when generated on the originator device may also be stored in the computer memory 120 of the originator device 100. The screen shot 620 may further include an embedded URL that may be used to regenerate the live webpage 102 from the web server 600, as discussed above.

[0052] The recipient device 300 as shown has a copy of the webpage 102 stored in a computer memory 320 of the recipient device 300, wherein the copy of the webpage 102 has the target object 202 identified and the markup 302 applied. A copy or instance of the Anchor Identification Strategy (AIS) 608 and the locator list 612 may also be stored in the computer memory 320 of the recipient device 300. As discussed above, the locator list 612 may contain the unique object 614 and the limiter object 616. The originator device viewport properties 618 and a screen shot 620 of the webpage as it was displayed when generated on the originator device 100. The screen shot 620 may further include an embedded URL that may be used to regenerate the live webpage 102 from the web server, as discussed above.

[0053] The relay server 700 as shown has an Anchor Identification Strategy (AIS) 608 stored in a computer memory 702 of the relay server 700. A collection of webpages and a corresponding collection of screen shots, wherein each webpage and each screen shot may have a collection of target object and a collection of mark-ups, each mark-up having a timestamp; the recipient list; the locator list, which may contain the unique object and the limiter object for each target object; and one or more viewport properties of the originator device may also be stored in the computer memory 702 of the relay server 700. In some system implementations, the relay server provides shared storage to the originator and recipient client devices.

[0054] While the subject matter herein refers mostly to webpages and web content, this is not limited to only webpages or web content. Any kind of content capable of being presented on a computer may be used, for example images, video clips, sound clips.

[0055] Implementations of the current subject matter can include, but are not limited to, methods consistent with the descriptions provided herein as well as articles that comprise a tangibly embodied machine-readable medium operable to cause one or more machines (e.g., computers, devices, etc.) to result in operations implementing one or more of the described features. Similarly, computer systems are also described that may include one or more processors and one or more memories coupled to the one or more processors. A memory, which can include a computer-readable storage medium, may include, encode, store, or the like one or more programs that cause one or more processors to perform one or more of the operations described herein. Computer implemented methods consistent with one or more implementations of the current subject matter can be implemented by one or more data processors residing in a single computing system or multiple computing systems. Such multiple computing systems can be connected and can exchange data and/or commands or other instructions or the like via one or more connections, including but not limited to a connection over a network (e.g. the Internet, a wireless wide area network, a local area network, a wide area network, a wired network, or the like), via a direct connection between one or more of the multiple computing systems, etc.

[0056] One or more aspects or features of the subject matter described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) computer hardware, firmware, software, and/or combinations thereof. These various aspects or features can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which can be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. The programmable system or computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

[0057] These computer programs, which can also be referred to programs, software, software applications, applications, components, or code, include machine instructions for a programmable processor, and can be implemented in a high-level procedural language, an object-oriented programming language, a functional programming language, a logical programming language, and/or in assembly/machine language. As used herein, the term "machine-readable medium" refers to any computer program product, apparatus and/or device, such as for example magnetic discs, optical disks, memory, and Programmable Logic Devices (PLDs), used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and/or data to a programmable processor. The machine- readable medium can store such machine instructions non-transitorily, such as for example as would a non-transient solid-state memory or a magnetic hard drive or any equivalent storage medium. The machine-readable medium can alternatively or additionally store such machine instructions in a transient manner, such as for example as would a processor cache or other random access memory associated with one or more physical processor cores.

[0058] To provide for interaction with a user, one or more aspects or features of the subject matter described herein can be implemented on a computer having a display device, such as for example a cathode ray tube (CRT) or a liquid crystal display (LCD) or a light emitting diode (LED) monitor for displaying information to the user and a keyboard and a pointing device, such as for example a mouse or a trackball, by which the user may provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well. For example, feedback provided to the user can be any form of sensory feedback, such as for example visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including, but not limited to, acoustic, speech, or tactile input. Other possible input devices include, but are not limited to, touch screens or other touch-sensitive devices such as single or multi-point resistive or capacitive trackpads, voice recognition hardware and software, optical scanners, optical pointers, digital image capture devices and associated interpretation software, and the like.

[0059] In the descriptions above and in the claims, phrases such as "at least one of or "one or more of may occur followed by a conjunctive list of elements or features. The term "and/or" may also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it used, such a phrase is intended to mean any of the listed elements or features individually or any of the recited elements or features in combination with any of the other recited elements or features. For example, the phrases "at least one of A and Β;" "one or more of A and Β;" and "A and/or B" are each intended to mean "A alone, B alone, or A and B together." A similar interpretation is also intended for lists including three or more items. For example, the phrases "at least one of A, B, and C;" "one or more of A, B, and C;" and "A, B, and/or C" are each intended to mean "A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together." Use of the term "based on," above and in the claims is intended to mean, "based at least in part on," such that an unrecited feature or element is also permissible.

[0060] It will be further understood that the articles "a", "an", "the" and "said" are intended to mean that there may be one or more of the elements or steps present. The terms

"comprising", "including" and "having" are intended to be inclusive and mean that there may be additional elements or steps other than those expressly listed.

[0061] The subject matter described herein can be embodied in systems, apparatus, methods, and/or articles depending on the desired configuration. The implementations set forth in the foregoing description do not represent all implementations consistent with the subject matter described herein. Instead, they are merely some examples consistent with aspects related to the described subject matter. Although a few variations have been described in detail above, other modifications or additions are possible. In particular, further features and/or variations can be provided in addition to those set forth herein. For example, the implementations described above can be directed to various combinations and subcombinations of the disclosed features and/or combinations and subcombinations of several further features disclosed above. In addition, the logic flows depicted in the accompanying figures and/or described herein do not necessarily require the particular order shown, or sequential order, to achieve desirable results. Other implementations may be within the scope of the following claims.

[0062] The operations described herein may be performed in any order, unless otherwise specified, and embodiments of the disclosure may include additional or fewer operations than those disclosed herein. Moreover, when one element or step is described as being responsive to another element or step, it will be understood that the elements or steps may be coupled directly or indirectly. [0063] The foregoing has been presented for the purpose of illustrating certain aspects of the present disclosure and is not intended to limit the disclosure. Persons skilled in the relevant art will appreciate that many additions, modifications, variations and improvements may be implemented in light of the above teachings and still fall within the scope of the present disclosure.