Abstract:
The invention relates to enabling one or more users or applications to orchestrate, through direct or indirect communications between Web browser instances, the operation of multiple of the Web browser instances, and/or pages of the same Web browser instance, thereby enhancing user experience and functionality. The invention thus provides for interacting with a computer generated webpage. In a particular embodiment, the method defines a centrally managed target set account on a target set&gt;server, and logging-in to the target set account from each device to be included the target set. An entry is created for each such logged-in device and each entry includes at least an identifier for each device and connection information for each device. Using the target set server, the information stored in the entries in the target set can be enabled as interactive displays on each of the devices identified in the target set entries.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims priority from U.S. provisional application Ser. No. 61/863,333, filed on Aug. 7, 2013, which is incorporated by reference herein in its entirety. This application also claims the benefit of U.S. patent application Ser. No. 14/284,018, filed May 21, 2014, which is hereby incorporated by reference herein in its entirety. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    The World Wide Web (abbreviated as www) and commonly known as the Web, is a system of interlinked hypertext documents accessed via the Internet. Standards for the operation of the World Wide Web are published by the World Wide Web Consortium. 
         [0003]    Users access documents held on Web servers using a client application known as a Web browser which retrieves, using hypertext transfer protocol (HTTP), documents written in hypertext mark-up language (HTML) and then displays them. The displayed document is usually described as a Web page, and may contain text, images, videos and other multimedia, as well as computer programs which run in isolation in the Web browser to perform functions such as updating the displayed Web page with live data. Well known Web browsers used on personal computers include Microsoft Internet Explorer, Mozilla Firefox, Google Chrome and Apple&#39;s Safari. Web browsers are also embedded into many other electronic devices including smartphones and tablets. Well known Web page programming languages that run in the Web browser include JavaScript and jQuery. 
         [0004]    Users access Web pages through a character string known as a Uniform Resource Locator (URL). Each page on the Web has a unique URL to identify and access it. URLs may be typed in by the user, stored as bookmarks, or embedded into other applications, documents or Web pages when they are known as hyperlinks. A hyperlink may be visible as the full URL, or may be referenced by another visible object, such as informative text, or a graphic. Moving the computer mouse pointer over a hyperlink, or its associated text or graphic, and clicking the mouse button causes the Web browser to “navigate” to the requested page, by retrieving the hypertext document (identified by the URL) from the appropriate Web server, and replacing the currently displayed page with the newly retrieved one. 
         [0005]    Users operate Web browsers by navigating to a first Web page, either by typing in its URL, or more often automatically via a saved URL when the browser application is started. Thereafter, operation of the browser is primarily via hyperlinks, until the user decides to specify a new starting point, when they may type in a new URL or navigate to a saved one. 
         [0006]    In some instances, users will find it desirable to retain the current page, rather than having it overwritten by the new page, and for this purpose Web browsers typically provide for opening an additional page within the same browser application, or to start another browser application instance on which the page is then displayed. Where multiple pages are opened in a single browser instance, each is placed on a different “tab” with only one tab usually visible at any given time, but providing easy means to instantly switch between them without re-loading the displayed page. For example, the Microsoft Internet Explorer Web browser allows the user to “right-click” on a hyperlink which displays a context menu with “Open in a new tab” and “Open in a new window” options. 
         [0007]    Web browsers also have the ability to save metadata, manually or automatically, such as the user&#39;s “favorite” pages, bookmarks, a history of retrieved pages, or usernames and passwords that may be required to access some Web pages. 
         [0008]    In addition, Web servers can cause the browser application to store a small amount of data, known as a “cookie” on the user&#39;s machine. This data persists on the user&#39;s machine (unless the user intentionally deletes it) and is available to the Web server whenever the user retrieves documents from that server in the future. Web servers use cookies to identify users, for example to prevent them from having to repeatedly enter login credentials, and to “remember” other details of that user&#39;s past activity. The cookies for a given Web server are stored in the same place on the user&#39;s machine, and thus all browser instances (and tabs within a browser instance) will access the same cookies for any given site. This is beneficial to the user as, for example, if the user&#39;s logged in status is stored in a cookie, the user need not be forced to authenticate again if they open pages in new tabs or browser instances. 
         [0009]    Other than in the limited cases described above, Web browsers (and tabs within a browser instance) operate in complete isolation, with the user operating on only one at any given time. 
         [0010]    User actions carried out in one browser or tab have no effect on the operation of any other browser or tab. 
         [0011]    For the purposes of this document, the screen area on which Web pages are displayed will be termed a “target”. Each Web browser instance will have at least one target, and may have many, each accessed through a different tab. As noted above, only one tab is usually visible at any given time. 
         [0012]    In addition, it should be noted that Web pages have the ability to be split into one or more segments each known as a “frame”. Each frame can display a different hypertext document, and thus each can be considered a target. 
         [0013]    Web browsers typically provide a methodology for their functionality to be extended by a “browser extension” (also known as a “plug-in”, “add-on” or “browser helper object”). Browser extensions can be developed by third parties and are frequently used to provide specialist toolbars, easy access to search engines, and other similar functions. 
         [0014]    Historically, users typically had a single computer screen on which they operated at any given time, although there were notable exceptions, such as in financial dealing rooms where users often had multiple computers and screens each showing different information. More recently, having dual screens on a single computer has become commonplace, and with the advent of smartphones and tablet computers, users often have multiple devices, each with one or more Web browsers. All of these Web browsers operate in isolation. 
       SUMMARY OF THE INVENTION 
       [0015]    The present invention provides a method and apparatus for targets, Web browser applications and displayed user generated pages, to inter-operate, either under the direction of the user, or as determined by a given Web site. A simple example would be clicking a hyperlink in one target (the “source target”) which causes the navigation to occur on an entirely different target (the “destination target”). The destination target could be within a frame, on another tab, in the same or another browser instance on the same computer or device, or on a different computer or device in the same, or an entirely different physical location. 
         [0016]    A method according to the invention, relates to operating a plurality of web browser applications in communication with each other, each of the web browser applications displaying at least one computer generated target web page. The method features communicating, between a communication source which can include either or both of a first target web page and its first web browser application, to one or more other of said target web pages, and causing an action on the first target web page to affect the occurrence of web page navigation at at least one of the other target web pages. 
         [0017]    The method can further feature communicating directly or indirectly between one of the other target web pages and the browser application hosting the first target web page. The method further can communicate directly or indirectly between ones of the target web pages. 
         [0018]    In one exemplary embodiment, the user defines a “target set” identifying the available destination targets on which navigation can occur. In this embodiment, the target set is managed centrally, such that each Web target (or the Web browser hosting it) can be aware of the existence of other targets in the target set, and their availability. 
         [0019]    When navigation on another target is to occur, the source target (or the Web browser hosting it) sends a navigation request to the destination target (or the Web browser hosting it) using one of a number of possible methods. The destination target (or Web browser) then carries out the navigation request. 
         [0020]    The destination target can be determined manually by the user of the source target, or programmatically at the Web server which generates the hypertext document (Web page) displayed on the source target, by code embedded into the hypertext document (Web page) displayed on the source target, by browser extension code on the Web browser hosting the source target, or by any combination of these. 
         [0021]    Optionally, the user can elect to create a new destination target, either as a tab in an existing Web browser instance, or by launching a new Web browser instance on a given device. 
         [0022]    The invention need not be limited to causing navigation to occur on a single destination target; it could occur on any selection of targets in the set, including the source target. 
         [0023]    In addition, the invention can be used to repeat the last navigation to occur on the source target, such that the currently displayed hypertext document (Web page) on the source target is navigated to and displayed on the destination target(s). 
         [0024]    Optionally, the above techniques can be combined, for example to create a new set of tabs as destination targets, each of which repeats the last navigation to occur on a corresponding set of source tabs. 
         [0025]    Optionally, also, a user, and targets on his/her devices, can be members of more than one target set. An apparatus and method are provided for the user to select which target set, and hence which destination targets, is operational at any given time. Where multiple users “share” a target set, any user is allowed to determine when they wish to be open to accepting navigation requests from another user&#39;s device. 
         [0026]    The invention has a broad variety of use cases, examples of which will be given hereinafter, but it will be appreciated that there are many more such cases which can be created. 
         [0027]    Consider a user working on his or her office PC, researching information on the Web. The user wants to continue the research on their home PC, or while travelling using their laptop, smartphone or tablet. Without the invention, the user has to re-type the URL of each tab on their Web browser(s) into corresponding tabs on the new device, or perform a cumbersome “cut and paste” sequence via email or instant messaging. Both methods are time consuming and error prone. In accordance with an exemplary embodiment of the invention, the user can issue a simple “one-click” command which replicates all the currently displayed Web pages on one device to another device of their choice. 
         [0028]    A similar situation frequently occurs when two users are engaged in live communication, such as a telephone call. User A has browsed to a given Web page on their device, and wants User B to view the same page on his/her device. Without the invention, user A has to read the URL to user B, or “cut and paste” it into an email or chat session, which user B then retrieves to “cut and paste” into their own application. With the invention the two users can be members of the same target set, and replicate pages on each other&#39;s devices with a “oneclick” command. The users can set up a target set for communication between them, and only allow the set to be “active” when they are in live communication with one another. 
         [0029]    Consider a classroom environment (physical or virtual) in which students each have their own device. The invention allows the teacher to immediately guide students to any given Web page (or set of pages) either for information, or to define a starting point from which the students then navigate. Without the invention, the teacher is limited to solutions which mimic the teacher&#39;s screen display on the student&#39;s machine, and which do not allow students to continue navigation themselves. 
         [0030]    Consider a monitoring situation, such as a network operations center, where multiple secondary displays (typically attached to different computers) are located adjacent to one or more primary displays. Operators typically view alerts on a central (primary) display, and use secondary displays, or completely separate computers, to investigate them, thereby leaving the central (primary) display(s) to show further alerts. Without the invention, precious time is lost, and potential errors made while the investigating user locates the source of the alert. With the invention, a user can simply click a hyperlink on the central (primary) display which immediately navigates to the source of the alert on the required secondary, or separate computer. 
         [0031]    Consider an application that needs to present a large amount of information simultaneously to one or more users. Current high definition screen display resolution is typically 1920 by 1080 pixels, and while higher resolution display screens exist, they require more advanced graphics cards to drive them, and are considerably more expensive. Using the invention, applications can seamlessly operate across multiple screen displays inexpensively and with ease. 
     
    
     
       BRIEF DESCRIPTION OF THE FIGURES 
         [0032]    Other objects and features of the invention will be apparent from the drawings in which: 
           [0033]      FIG. 1  shows a variety of devices running Web browser instances connected via the Internet to a Web server; 
           [0034]      FIG. 2  shows an example of a centrally held target set definition in table form; 
           [0035]      FIG. 3  shows a sample Web browser displaying a hypertext document (Web page) retrieved from a Web server; 
           [0036]      FIG. 4  shows a sample Web browser with context menu options to allow navigation to a different target browser; 
           [0037]      FIG. 5  shows a sample Web browser where a set of buttons allows the user to select the destination target for subsequent hyperlink navigation; 
           [0038]      FIG. 6  shows the message flow between components when the user initiates hyperlink navigation on a different device; 
           [0039]      FIG. 7  shows a sample Web page incorporating a drop-down field which allows the user to select the destination target for the next hyperlink navigation; 
           [0040]      FIGS. 8A and 8B  are operational flow diagrams of an exemplary embodiment of the invention; and 
           [0041]      FIG. 9  is an operational flow diagram continuing from  FIGS. 8A and 8B . 
       
    
    
     DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS 
       [0042]    Referring to  FIG. 1 , in one exemplary embodiment, a computer workstation  1 A, which has two screen displays attached, is running three instances of a Web browser application. Two instances,  2 A and  3 A, appear on the first display, and the third instance  4 A appears on the second display. The user also has a smartphone  5 A, and a home laptop computer  6 A, each running Web browser application instances. Each of the Web browser instances is connected via the Internet  7 A to one or more Web servers  8 A. 
         [0043]    The user has defined a centrally managed target set, preferably by creating a user account on a Web server intended for the purpose (the “target set server”). The user logs-in to the target set server account from each device he or she wishes to have targets in the target set, and creates an entry for each target. 
         [0044]    Referring to  FIG. 2 , table  1 B shows a target set with 5 target entries. The user gives each target entry a suitable name to permit easy recognition. In this case the table entry names refer to Web browser instances  2 A,  3 A,  4 A,  5 A and  6 A respectively. 
         [0045]    The target set server creates a unique identifier for each target, which the Web browser stores on the local device, preferably in the form of a cookie. Where there is more than one target on a given device, a separate cookie is stored for each, in such a way that each target is uniquely identifiable. 
         [0046]    The target set server also maintains connection information for each connected target, such that it can communicate with that target. Each entry in table  1 B provides a connection ID identifying the communication channel established between the target set server and the Web browser instance on which the target is running. 
         [0047]    A given Web browser or target can now communicate, or otherwise interrogate, the target set server to establish the names and identities of other targets in the set. It simply passes its unique identifier to the target set server, which uses the unique identifier to establish which set the target is a member of, and returns a list of names and identifiers for other targets in the set. If unique identifiers are allocated randomly by the target set server, and are of sufficient length, it will be unfeasible for any unauthorized third party to guess them. It will be appreciated that additional security procedures and mechanisms could be provided, but they will not be discussed further here. 
         [0048]    With knowledge of the full target set, each target can now present options to the user, or programmatically determine which target should be used for each navigation request. 
         [0049]    Referring to  FIG. 3 , an exemplary Web browser  1 C has three tabs,  2 C,  3 C and  4 C. Tab  2 C is visible, the others being currently hidden. The sample Web page contains informative text and graphics. The Web page contains a variety of hyperlinks  5 C associated with highlighted text or graphic elements. Each hyperlink references a URL, typically in the example form  2 B, or in an example relative form to the current page  3 B. 
         [0050]    Referring to  FIG. 4 , a hyperlink  1 D on which the user has performed a “right click” mouse operation causes a context menu  2 D to appear. Context menus of this type are standard in Microsoft Windows environments, however the context menu has been extended (either by a browser extension, or by adding the functionality to the browser itself) to include options to open the hyperlink (that is to navigate to it) in four possible targets, being the names of four members of target set. The fifth member of the set (the first in table  1 B) is excluded since it is the target upon which the user is operating and would be equivalent to the first “Open” option shown in the context menu. 
         [0051]    If the user elects to open the hyperlink on one of the listed targets, then a message is sent, directly or indirectly, to the target (or the Web browser hosting the target) to cause the navigation to occur. 
         [0052]    There are a wide variety of methods of sending, receiving and acting upon the message, several of which will now be discussed. 
         [0053]    If the Web browsers are directly connected, for example on the same local area network (LAN), then they may communicate directly using a variety of standard network protocols. In such cases, the connection ID in table  1 B could be replaced by the address of the device running the relevant Web browser. 
         [0054]    Preferably, the devices will be connected through a wide area network, such as the Internet. However, in the majority of cases, client devices will be behind a firewall employing network address translation (NAT) for security purposes, and thereby preventing direct communication between client devices. 
         [0055]    In one variant of the invention, the target set server is used to facilitate such communication since it has connections established with each target device and can thus enable in direct communications between the web browsers.  FIG. 6  illustrates a source target running on device  1 F, a destination target running on device  2 F, a target set server  3 F, and a standard Web server  4 F, all connected through the Internet  5 F. When the user requests to open a hyperlink (Web page) on the destination target, the source target sends a message  6 F to the target set server  3 F detailing the unique identifier of the target that is to carry out the navigation request, and the URL to which it is to navigate. The target set server  3 F verifies that the source and destination targets are members of the same target set, and then sends the message  7 F to the target using the connection identifier associated with that target in table  1 B. 
         [0056]    The message is received by the Web browser hosting the intended target (either by a browser extension, or by adding the functionality to the browser itself), or by program code in the hypertext document (Web page) currently displayed in the target on device  2 F. In either case, the receiving program code then causes the target to navigate to the requested URL with a normal request to the standard Web server  4 F, which replies with the requested hypertext document  9 F. Optionally, the target set server  3 F can acknowledge that the request  7 F was successfully sent by sending an acknowledgment message  10 F back to the source target  1 F. 
         [0057]    Optionally, messages  6 F and  7 F could include flags to indicate if navigation should occur in the current target, or in a new target, either as a new tab or in a new Browser instance. 
         [0058]    If so, options could also be provided to automatically add the new target to the target set. When the user first adds a target to the target set, they could also be provided with an option to force navigation requests from another target to always occur in a new target, ensuring no current hypertext document (Web page) is overwritten. 
         [0059]    Referring to  FIG. 5 , a toolbar  1 E has been added to the Web browser (either by a browser extension, or by adding the functionality to the browser itself). The toolbar contains a set of buttons which allow the user to determine the target to be used when opening (that is navigating to) hyperlinks. In this example, the second button  2 E has been clicked, and will remain in the “down” (selected) state until the user clicks a different button. Thus all navigation will occur in the Web browser  3 A (named “Browser  2 ”). The first button  3 E is labeled “Here”, and if clicked will cause navigation to occur as normal in that browser. 
         [0060]    Note that with the toolbar, the usual context menu options “Open”, “Open in a new tab” and “Open in a new window” can be applied to the selected destination target by including an appropriate flag in the message sent to destination target. 
         [0061]    A variety of additional functions can be provided to the user in a toolbar or elsewhere, for example a single “Copy All” button could cause the Web page displayed on each tab of the current Web browser to be navigated to on a set of new tabs on the destination&#39;s Web browser. When the button is clicked, the Web browser cycles through each current tab, sending a navigation request for each to the currently selected target. In each case, the requested URL will be the current address of the displayed page, rather than a hyperlink contained within it. 
         [0062]    In an alternate variant of the invention, the destination target can be determined without requiring any modification or extension of the source Web browser. This is possible where a Web based application wants to provide the capabilities of the invention, by including program code in one or more of the hypertext documents (Web pages) generated by that application. For example, in  FIG. 7 , the displayed Web page includes a drop-down  1 G which allows the user to select from available targets. When the user clicks any of the hyperlinks on the page, program code in the hypertext document intercepts the request and sends it to the selected destination target as described in connection with  FIG. 6 . It is particularly advantageous if the target set server and the application&#39;s Web server are integrated, so that the drop-down can be populated, by methods known in the field, prior to being sent to a client device. The destination target can also be determined programmatically, rather than being set by the user. 
         [0063]    In a further variant of the invention, the destination target is determined by the URLs associated with each hyperlink in the hypertext document (Web page), without requiring any modification or extension of the source Web browser, or any program code in the hypertext document. In  FIG. 2 , URL  4 B includes the destination target&#39;s unique identifier as a parameter. When the user clicks on the hyperlink, the standard HTTP request is sent to the Web server. Program code in the Web server identifies the existence of the “pb_target” variable as in URL  4 B, from which it determines that the request is intended to be processed by the destination target identified by the value assigned to the “pb_target” variable—in this case the unique identifier associated in table  1 B with “My Phone”. The Web server then checks the unique identifier, strips the “pb_target” parameter from the URL and sends the navigation request message to the destination target as previously explained. An important additional requirement is for the Web server to respond to the Web browser making the HTTP request. Normally the Web server would respond with an HTTP “200 OK” header, indicating it had found the required page, and would commence downloading it for the Web browser to start displaying. However, in this case we explicitly do not want the navigation to occur in that browser, and so the Web server responds with an HTTP “204 No Content” header which indicates no action is required by the Web browser which leaves the existing page displayed. If the Web server were to determine that the specified unique identifier did not exist, or the destination target was not available, it could return an HTTP error message, such as HTTP “503 Service Unavailable”. 
         [0064]    Referring now to the illustrative operational flow diagrams of  FIGS. 8A, 8B, and 9 , the context menu  2 D illustrated in  FIG. 4  can be clicked upon, or the hyperlink illustrated in  FIG. 5  at button  2 E can be selected or the drop down menu  1 G of  FIG. 7  can be used to present/target the destination of the page being requested. The methodology is illustrated in  FIG. 8A . 
         [0065]    A selected button or drop-down request is tested at  10  to determine if either has been selected to request opening in a different target. If it has not been requested, the process continues normally at  12 . Otherwise, it continues to “A” in  FIG. 9 . On the other hand, if the hyperlink of a standard page has been clicked upon, referring to  FIG. 8B , the system, at  14 , sends the request normally to the target set server that is the specified URL. The system then proceeds to “B” in  FIG. 9 . 
         [0066]    Referring to  FIG. 9 , the system begins at  20  and first checks for reception of a message from the source target. This occurs at  22 . If the message resulted from a selected button or drop-down request, in the source target process, for opening the requested page in a different target, the message is sent at  24  to the target set server process. The source target process then waits for a response from the target set server process at  27 . In the meantime, the URL if, that was the source of the instruction, is sent to the message receive element  22  of the target set server process. 
         [0067]    If, on the other hand, the message is from a clicked hyperlink, the target parameters are stripped, at  26 , from the specified URL and the source and destination members are checked, at  28 , to see if they are from the same target set. If they are not, the system passes to element  30  where an appropriate message is sent indicating that the requested activity is forbidden. On the other hand, if the source and destination members are in the same target set, then a navigation request is sent at  32  and, optionally, the system can wait for a response at  34 . In parallel with this activity, the system also begins a thread wherein the navigation request from  32  is received at  38  of the destination target process, and a response is optionally sent back to the target set server at  40 . Once received at the target set server  34 , the appropriate response is sent at  30  to the source target process  27 . Thereafter, the destination target process navigates, at  42 , to the requested page. 
         [0068]    Other embodiments of the invention will be apparent to one of skill in the field and are within the scope of the following claims.