Simple web site navigation is achieved mostly through use of the web browser “Back” button. Most modern web browsers remember the scroll point or position of a particular page, and when the user clicks “Back,” the browser automatically scrolls to the proper position. Complicated internet applications, however, often serve dynamically-generated content. Those internet applications often include complex navigation schemes where every button click has a side-effect. For example, a user might be required to click a “Save” button in order to commit some changes, and the use of the browser's “Back” may cause trouble. Executing the browser's “Back” button sends no information to the server, and only pulls the most recent page from the browser's local cache. Most internet applications, in fact, are troubled by the use of the browser's “Back” button, as its use can cause confusing server states and result in ambiguous results. Some internet applications attempt to disable the browser's “Back” button entirely.
INTRODUCTION: Navigating a complex web site often involves a user starting at a home page, clicking or drilling “down” to a desired page and then navigating back “up” toward the home page. When returning to a previously viewed page within the web site, a user may benefit from being automatically returned to a particular point within that page. For example, a user may scroll down to a particular point within an initial web page where the user selects a link to a secondary web page. Later, the user may select a link in the secondary web page or yet another web page that directs the user back to the initial page. Upon return, the user may prefer to be automatically returned to the particular position within the initial web page-that is-to the position where the user selected the link to access the secondary web page.
Various embodiments described below operate to enable a web server to “remember” a user's last known position within a web page or other object. Upon return to a previously viewed page or object, the web server can instruct or otherwise provide data enabling the user to be automatically repositioned to that last known location.
The following description is broken into sections. The first section, labeled “environment” describes an exemplary network environment in which embodiments may be implemented. The second section, labeled “components,” describes exemplary logical and physical components used to implement various embodiments. The third section, labeled “operation,” describes exemplary method steps for implementing various embodiments.
ENVIRONMENT: Although the various embodiments of the invention disclosed herein will be described with reference to the computer network 10 shown schematically in
Communication link 20 interconnects server device 12 with client devices 14-18. Communication link 20 represents generally a cable, wireless, fiber optic, or remote connection via a telecommunication link, an infrared link, a radio frequency link, or any other connector or system that provides electronic communication between devices 12 and 14. Communication link 20 may represent an intranet, the Internet, or a combination of both. The paths followed by link 20 between devices 12 and 14 in the schematic view of
COMPONENTS: The logical components of various embodiments of will now be described with reference to the block diagrams of
Hardware interface 24 represents generally the hardware and programming enabling a user to interact with client device 14. Hardware interface 24 will typically include a display screen and an input device such as a mouse or touchpad and even speakers. The input and display functions of hardware interface 24 may be implemented using a touch screen such as is typically found in a PDA Personal Digital Assistant) or a tablet PC (Personal Computer).
Browser 26 represents generally any combination of hardware and/or programming configured to function as a client for requesting and receiving data from server device. Browser 26 may be a conventional browser such as Mozilla's Firefox™ or Microsoft's Internet Explorer®. Alternatively browser 26 may be a subcomponent of another application such as a word processor or multi-media player. Memory 28 represents generally any memory that can be utilized by browser 26. Broadly speaking, browser 26 requests an object from server device 12. An object may be a web page, a document, a graphics file, motion video content, audio content or anything else that can be presented via a visual display and/or an audible broadcast. An object is typically requested using an appropriate URL (Uniform Resource Locator). The URL references the object and the server responsible for returning the object. An URL may be supplied by a user through hardware interface 24. For example, a user may enter the URL using a keyboard or the user may select a link using a pointing device such as a mouse.
In response to a request from browser 26, server device returns the requested object. Often this is an HTML (Hyper-Text Markup Language) file that may include content and/or references to external content. Content can include various items such as text, documents, still images, video files, and audio files to be presented to a user. Content such as text is often included in the object. However, external content such as applets, documents, still images, video files, and audio files are instead referenced by the HTML object using appropriate links. When processing an HTML object, browser recognizes those links and downloads any external content.
After processing or otherwise examining a requested object, browser 26 causes hardware interface 24 to present the content data. This can involve displaying visual content on a display screen and/or broadcasting audio content through speakers. Displaying the visual content may require more space that is available on a display screen. In such a case, browser 26 presents a user interface with controls that allow the user to scroll up and down and, in some cases, left and right to reposition the display and reveal otherwise hidden portions of the visual content. Audio and motion video content, by their nature cannot be presented all at once. Instead, they have a duration and are presented over time. In such a case, browser 26 may present a user interface with controls that allow the user to skip ahead or skip back to reach a desired playback position.
Server device 12 is shown to include network interface 30, server 32, content provider 34, position manager 36, and position data store 38. Network interface 30 represents generally any combination of hardware and/or programming configured to enable server device 12 to communicate electronically with client device 14. For example, network interface 30 may include an Ethernet card and supporting device drivers. Alternatively, network interface 30 may be a device capable of wireless communication using protocols such as Bluetooth or 802.11.
Server 32 represents generally any combination of hardware and programming configured to receive object requests from and returning requested objects to client device 14. Content provider 34 represents generally any combination of hardware and/or programming configured to provide server 32 with a requested object. Content provider 34 may simply retrieve and provide server 32 with a previously created object. Alternatively, content provider may dynamically generate the object in response to the particular request received by server 32. Content data for an object may be stored on server device 12 or on another server device (not shown) accessible to client device 14.
Position manager 36 represents generally any combination of programming and/or hardware configured to manage position data store 38. Position manager 36 is responsible for providing server 32 with position data to return with a requested object, obtaining the position data from position data store 38. Position data is any data that identifies a position for presenting an object. Position data may include pixel coordinates. For example, an object might fill a grid of 2,000 by 6,000 pixels. Position data might then identify coordinates within that grid. Programming displaying the object can then use the coordinates to automatically position the display. The coordinates could define a center point or even a window to be displayed. Position data may instead identify a page of a document or a start time for video or audio content. Position data store 38 represents generally one or more databases in which position data is associated with an object and a user.
Each entry 40 includes one or more sub entries 48-52 each containing data in object field 44 and position field 46. Data in object field 44 identifies a particular object such as a web page, document file, or multimedia content. Position field 46 of a particular sub entry 48-52 contains position data. As noted above, depending on the nature of the object, position data can identify pixel coordinates, a particular page of a document, or even a start position for audio and video contents. In this manner, position data store 38 associates position data with an object and a user.
With reference to
Position manager 36 is also responsible for adding new entries/subentries and updating existing entries/subentries within position data store 38. From time to time server 32 will receive updated position data for a particular object and pass that information on to position manager 36. Position manager 36 can then add or update a corresponding entry/subentry within position data store 38.
Script engine 56 represents generally any combination of hardware and/or programming configured to execute scripts contained in objects processed by object engine 54. A script is a list of commands that can be executed without user interaction. Scripts can be written in a number of different script languages such as JavaScript®. 4 In
Position script 60 also includes commands that when executed by script engine 56, cause object engine 54 to report updated position data to server device 12. The updated position data, for example, may correspond to the position of a presentation of object 58 as the presentation being closed. Closing a presentation of an object may involve presenting another object. For example, a user may select a link within the presentation of object 58 that causes object engine 54 to retrieve and present a different object. Closing may also involve the user exiting browser 26A.
Moving to
Position service 68 represent generally any combination of hardware and/or programming configured to cause object engine 66 to automatically position a presentation of object 64 according to position data. Position service 68 is also responsible for causing object engine 66 to report updated position data to server device 12. Position service 68, for example, may be a browser “plug-in” or “extension” that adds the specified services to browser 26B. While shown as being integral to browser 26B, position service 68 may be a separate component capable of programmatic interaction with browser 26B.
Position service 68 is shown to include receiver 70, positioner 72, and reporter 74. Receiver 70 is responsible for receiving or otherwise obtaining position data from server device 12. Positioner 72 is responsible for causing object engine 66 to automatically position the presentation of object 64 according to the position data received by receiver 70. Reporter 74 is responsible for reporting updated position data to server device 12. As above, the updated position data, for example, may correspond to the position of a presentation of object 64 as the presentation being closed. Closing a presentation of an object may involve presenting another object. For example, a user may select a link within the presentation of object 64 that causes object engine 66 to retrieve and present a different object. Closing may also involve the user exiting browser 26B.
OPERATION: The operation of embodiments will now be described with reference to the flow diagrams of
It is next determined if the request received in step 76 originated from a referrer object (step 80). A referrer object is an object being presented to a user that refers the user to the particular object requested. For example, an object may be a web page with a link to the requested object. Upon selection of the link, the object containing the link is known as a referrer object. Where a user requests an object without selecting such a link, there is no referrer object.
Where the request does not originate from a referrer object, the process skips to step 86. Where the request originated from a referrer object, position data is obtained for the referrer object (step 84). The position data may reference the position in the presentation of the reference object at which the request in step 76 was made. The position data is then used to update a corresponding data base entry (step 84), that is, the data base entry associating the referrer object with the identified user. Referring back to
It is next determined if position data exists for the identified user and the requested object (step 86). Referring back to
Moving on to the client side implementation of
Position data is then reported back to the server (step 100). Step 100 may, for example occur when the presentation of the object is closed. As mention earlier, a presentation may be closed by browsing other objects (step 102). The object is again requested from the server (step 104). The object is received as is the position date previously reported in step 100 (step 106). The object is then automatically presented at a position determined according to the position data (step 108). In this manner the user is automatically returned to the last known position in the presentation of the object, that is, the position determined in step 98.
The schematic diagram of
Also, the present invention can be embodied at least in part, in any computer-readable media for use by or in connection with an instruction execution system such as a computer/processor based system or an ASIC (Application Specific Integrated Circuit) or other system that can fetch or obtain the logic from computer-readable media and execute the instructions contained therein. “Computer-readable media” can be any media that can contain, store, or maintain programs and data for use by or in connection with the instruction execution system. Computer readable media can comprise any one of many physical media such as, for example, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor media. More specific examples of suitable computer-readable media include, but are not limited to, a portable magnetic computer diskette such as floppy diskettes, hard drives or a portable compact disc.
Although the flow diagrams of
The present invention has been shown and described with reference to the foregoing exemplary embodiments. It is to be understood, however, that other forms, details and embodiments may be made without departing from the spirit and scope of the invention that is defined in the following claims.