US20020129064A1 - Method and system for injecting code to conditionally incorporate a user interface component in an HTML document - Google Patents
Method and system for injecting code to conditionally incorporate a user interface component in an HTML document Download PDFInfo
- Publication number
- US20020129064A1 US20020129064A1 US09/872,474 US87247401A US2002129064A1 US 20020129064 A1 US20020129064 A1 US 20020129064A1 US 87247401 A US87247401 A US 87247401A US 2002129064 A1 US2002129064 A1 US 2002129064A1
- Authority
- US
- United States
- Prior art keywords
- code
- browser
- html document
- html
- component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/561—Adding application-functional data or data for application control, e.g. adding metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/53—Network services using third party service providers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/563—Data redirection of data network streams
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Definitions
- the present invention relates to transparently modifying an existing document and, in particular, to injecting code into an HTML document that conditionally generates a user interface component.
- HTTP Hypertext Transfer Protocol
- Each HTTP message follows a specific layout, which includes amongst other information a header, which contains information specific to the request or response. Further, each HTTP request message contains a universal resource identifier (a “URI”), which specifies to which network resource the request is to be applied.
- a URI is either a Uniform Resource Locator (“URL”) or Uniform Resource Name (“URN”), or any other formatted string that identifies a network resource.
- URLs as an example of URIs, are discussed in detail in T. Berners-Lee, et al., Uniform Resource Locators ( URL ), RFC 1738, CERN, Xerox PARC, Univ. of Minn., December, 1994, which is incorporated herein by reference.
- FIG. 1 illustrates how a browser application enables users to navigate among nodes on the WEB network by requesting and receiving WEB pages.
- a WEB page is any type of document that abides by the HTML format. That is, the document includes an “ ⁇ HTML>” statement.
- a WEB page is also be referred to as an HTML document.
- the HTML format is a document mark-up language, defined by the Hypertext Markup Language (“HTML”) specification. HTML defines tags for specifying how to interpret the text and images stored in an HTML document. For example, there are HTML tags for defining paragraph formats and for emboldening and underlining text. In addition, the HTML format defines tags for adding images to documents and for formatting and aligning text with respect to images.
- HTML Hypertext Markup Language
- HTML tags appear between angle brackets, for example, ⁇ HTML>. Further details of HTML are discussed in T. Berners-Lee and D. Connolly, Hypertext Markup Language -2.0, RFC 1866, MIT/W3C, November, 1995, which is incorporated herein by reference.
- a WEB browser application 101 is shown executing on a client machine 102 , which communicates with a server machine 103 by sending and receiving HTTP packets (messages).
- Web browser 101 “navigates” to new locations on the network to browse (display) what is available at these locations.
- WEB browser 101 “navigates” to a new location, it requests a new document from the new location (e.g., server machine 103 ) by sending an HTTP-request message 104 using any well-known underlying communications wire protocol.
- HTTP-request message 104 follows the specific layout discussed above, which includes a header 105 and a URI field 106 , which specifies the network location to which to apply the request.
- the server machine specified by URI 106 (e.g., server machine 103 ) receives the HTTP-request message, it decomposes the message packet and constructs a return message packet to the source location that originated the message (e.g., client machine 102 ) in the form of an HTTP-response message 107 .
- the HTTP-response message 107 contains the requested HTML document 109 .
- the WEB browser application 101 extracts the HTML document 109 from the message, and parses and interprets (executes) the HTML code in the document in order to display the document on a display screen of the client machine 102 as specified by the is HTML tags.
- FIG. 2 illustrates the use of a proxy server machine to send and receive HTTP documents.
- the WEB browser application 201 which is shown executing on a client machine 202 , sends an HTTP-request message 205 to a server machine 203 .
- the server machine e.g., server machine 203
- the server machine is specified by the URI field 206 contained in the HTTP-request message 205 .
- the HTTP-request message 205 is sent first to a proxy server machine 204 , which then forwards the HTTP-request message 205 as message 207 to the server machine 203 .
- the proxy server machine 204 contains a separate external network connection to server machine 203 , the client machine 202 is protected from ill-behaved applications, which may be executing on or accessible via server machine 203 .
- the proxy server machine may be specially programmed to detect viruses that may be sent in an HTTP-response message.
- server machine 203 sends an HTTP-response message 208 , which contains the requested HTML document 209 , to the originator of the message.
- the originator of the message is the proxy server 204 .
- the HTTP-response message 208 is first sent to the proxy server machine 204 before the requested document is delivered to client machine 202 .
- the proxy server machine 204 by having previously established a specific network connection for the original HTTP-request message 205 received from the client machine 202 , knows that the received HTTP-response message 208 corresponds to the HTTP-request message 205 and thus forwards the HTTP-response message 208 as HTTP message 210 to the client machine 202 .
- the WEB browser application 201 is then responsible for decomposing the HTTP-response message 210 to extract the HTML document and for executing the HTML code in the received document to properly display the document on client machine 202 .
- WEB browser applications such as WEB browser 101
- WEB browser 101 have attempted to make the navigational process easier for users by adding various “links” to places of interest. These links can be used to navigate to a pre-specified location by simple maneuvers, such as clicking on a graphical button on a screen.
- a link in this context refers to a URI, which is used by the browser application to locate another document.
- a WEB browser may provide graphical buttons, which are placed below the standard menus in toolbars. These buttons provide links that enable a user to easily navigate to specific locations defined by the developer of the WEB browser.
- the browser application In order to ensure that such links are present in every WEB page displayed, the browser application must include special code to display these graphical button user interface components. Thus, when a user invokes a different WEB browser application, the user may not have access to links to which the user has become accustomed.
- the present invention provides a method and system for injecting code into an existing HTML document that enables the conditional generation and incorporation of injectable components by a browser application.
- the injection mechanism provided by the present invention enables a user to incorporate add-on components in a WEB page that is displayed by any browser application. These add-on components may provide an additional user interface capability to the browser application. Also, the injection mechanism is able to ensure that the add-on component is generated only under certain conditions, for example, when the component is not already being displayed by the browser application.
- the injection mechanism installs interceptor code as a proxy server to intercept HTTP messages between client code and server code.
- the interceptor code monitors HTTP messages sent from the client and is responsible for injecting code into HTML documents that are sent from servers to the client.
- the injected code when executed by a client browser, conditionally inserts HTML code into the HTML document, which is then used by the browser to generate a new component, for example, a user interface component.
- the user interface component is conditionally generated when the browser is not already displaying an instance of the component.
- the code supporting the injectable component is previously downloaded to a client machine.
- the injection mechanism provides a means for updating this downloaded code.
- the interceptor code is responsible for providing periodic updates to the code that supports the injectable component.
- the code supporting the injectable component is downloaded whenever it is displayed.
- the injection mechanism also provides the ability to inject code into both HTML documents that support HTML framesets and those that do not.
- HTML framesets enable a page author to specify a hierarchical organization of sub-pages within a page.
- the interceptor code injects code that conditionally generates a new frameset tag statement, which surrounds the existing frameset.
- the new frameset when generated, specifies a frame that contains sufficient information to generate an instance of the injectable component.
- the interceptor code injects code into the body portion of the HTML document.
- This injected code conditionally inserts an additional HTML tag that is used by a browser to generate an object that corresponds to the injectable component.
- the injected code inserted by the interceptor code is written in a script language, such as Javascript or VBscript.
- the interceptor code installed as the proxy server is responsible for detecting whether the browser supports Active-X type objects, such as Microsoft's browser, or supports embedded plug-ins, such as Netscape's browser.
- the interceptor codes injects code that produces the correct component depending upon the browser mechanism.
- FIG. 1 illustrates how a browser application enables users to navigate among nodes on the WEB network by requesting and receiving WEB pages.
- FIG. 2 illustrates the use of a proxy server machine to send and receive HTTP documents.
- FIG. 3 is a block diagram illustrating an injectable component that has been incorporated into an existing HTML document without modifying the browser using the injection system of the present invention.
- FIG. 4 provides an overview block diagram of the techniques used by the injection system of the present invention to modify the actions of a browser to include an injectable component.
- FIG. 5 is a block diagram of a general purpose computer system for practicing embodiments of the injection system.
- FIG. 6 is an overview flow diagram of the steps executed by a browser to install the injection system and to properly parse and interpret the HTML document such that the injectable component is conditionally generated.
- FIG. 7 is a flow diagram of the steps performed to install the injection system of the present invention.
- FIG. 8 is a flow diagram of the steps performed by an installation program to install interceptor code as a new proxy server.
- FIG. 9 is a flow diagram of the steps performed by the interceptor code to process HTTP messages.
- FIG. 10 is a flow diagram of the steps performed by the interceptor code to inject code into an HTML document.
- FIG. 11 is an overview flow diagram of the steps performed by a browser to parse and interpret an HTML document.
- FIG. 12 is a flow diagram of the steps performed by a browser to parse and interpret the injected code inserted by the interceptor code module.
- FIG. 13 is a flow diagram of the steps performed by a browser that supports plug-ins when processing HTML tags.
- FIG. 14 is a flow diagram of the steps performed by a browser that supports Active-X components when processing HTML tags.
- FIG. 15 is a flow diagram of the steps performed by the interceptor code to update the code that implements the injectable component.
- the present invention provides a method and system for transparently incorporating an injectable component, such as a user interface component, into an existing HTML document when the document is processed by a browser application (a “browser”) that supports HTML.
- the present invention provides an injection system that injects code into HTML documents.
- the injected code causes an instance of an injectable component to be transparently generated by the browser under certain conditions, for example, when an instance of the injectable component is not already being displayed.
- the browser transparently generates the new component by executing the injected code during its normal processing of HTML documents.
- HTML tags are conditionally inserted into the document. These tags then automatically cause the browser to generate the instance of the injectable component. In this manner, the decision as to whether to create the instance of the injectable component is delayed until the actual processing of the HTML document by the browser.
- the injection system of the present invention provides an injectable component, such as a user interface object, and interceptor code for injecting, into every HTML document, code that conditionally generates an instance of the injectable component.
- the injection system operates by installing the interceptor code as a new proxy server between the user's current browser and a proxy server, if one exists. If a proxy server has not been previously established by the user, then the interceptor code is installed between the current browser and the network. The interceptor code then monitors HTTP messages sent between the browser and the pre-existing proxy server (or a destination server) and injects code into each HTML document returned in an HTTP-response message intended for the browser.
- the injected code in each HTML document is then processed by the browser as described to conditionally generate an instance of the injectable component.
- the injection system enables a user to supplement the user's browser with the additional functionality of the injectable component, without modifying the browser, by intercepting HTTP messages and placing code in HTML documents that causes the additional behavior to appear.
- FIG. 3 is a block diagram illustrating an injectable component that has been incorporated into an existing HTML document without modifying the browser using the injection system of the present invention.
- Browser window 301 contains its own control areas, such as browser window control area 302 and scrollbar area 304 , and an application window area 303 , which is used to display HTML documents.
- the HTML document currently displayed in the application window 303 contains injected user interface component 305 and three pre-existing frames of the HTML document, frames 306 , 307 , and 308 .
- the example injected user interface component 305 contains a drop-down menu 309 and several graphical buttons 310 , which provide links to portions of a 5-day weather forecast.
- User interface component 305 enables a user to have near-immediate access to the 5-day weather forecast from all HTML documents that are displayed within the browser window 301 .
- any contents can be displayed as the injectable component 305 , providing the appropriate links and embedded objects can be created by the browser.
- the present invention is not limited to providing weather forecasts or static information but rather may be used to provide any kind of static or dynamic information, interface, or component.
- the injection system of the present invention provides a technique for injecting a user interface component, such as the weather forecast bar shown in FIG. 3, each time an HTML document is newly loaded into the browser application window 303 . Moreover, the injection system provides a technique for ensuring that only one instance of the injectable component is generated and displayed in the browser application window 303 , regardless of which HTML document is loaded, in what order, or from what source.
- a user interface component such as the weather forecast bar shown in FIG. 3
- FIG. 4 provides an overview block diagram of the techniques used by the injection system of the present invention to modify the actions of a browser to include an injectable component.
- the WEB browser 401 sends and receives HTTP messages to a proxy server (or destination server) 403 as previously discussed with respect to FIGS. 1 and 2.
- WEB browser 401 sends HTTP messages to and receives HTTP messages from an interceptor code module 402 , which is installed as the current proxy server.
- Interceptor code module 402 is responsible for forwarding all HTTP requests and responses through the pre-existing proxy server if one existed prior to installation of the interceptor code module.
- WEB browser 401 sends an HTTP-request message 404 for an HTML document to interceptor code module 402 , which forwards the request as an HTTP-request message 405 to the previously designated proxy server or a destination server 403 .
- HTTP-requests and HTTP-responses.
- the HTTP-response is forwarded (through the pre-existing proxy server if designated) as HTTP-response message 406 to the interceptor code module 402 .
- the interceptor code module 402 determines whether the HTTP-response includes an HTML document (e.g., document 407 ) and, if so, modifies the contents of the HTML document to inject code, shown as injected code 408 .
- the injected code 408 is used later by the browser to conditionally generate an instance of the injectable component.
- the interceptor code module 402 returns the HTML document 407 with injected code 408 in an HTTP-response 409 to the WEB browser 401 .
- the WEB browser 401 then decomposes the HTTP-response 409 to extract the HTML document 407 and executes any code present in the document 407 in order to display the document on display 410 as specified by the code.
- the code processed by the browser may include any browser supported code, such as scripts or HTML tag statements.
- the injected code 408 which is injected into the HTTP-response 409 by interceptor code module 402 , contains instructions that specifically cause the WEB browser 401 to conditionally insert HTML tag statements (HTML code) into the document 407 when the browser executes the injected code.
- HTML code is used by the WEB browser 401 to generate and display an instance of the injectable component.
- the conditions are determined by the injected code itself.
- the injected code is written to only insert these HTML tag statements when the component is not already being displayed. Thus, the injected code, when executed, detects when the specified condition is met.
- the WEB browser 401 creates an instance of the component that is specified by the inserted HTML code.
- the inserted HTML code specifies an ⁇ OBJECT> tag, which defines an Active-X component for browsers that support Active-X components, such as the Microsoft Internet Explorer. Active-X components and the Microsoft Internet Explorer are defined in greater detail in J. O'Donnell et al., Special Edition Using Microsoft Internet Explorer 3, QUE Corp., 1996, which is incorporated herein by reference.
- the inserted HTML code specifies an ⁇ EMBED> tag, which defines an embedded plug-in object for browsers that support embedded plug-ins, such as the Netscape browser.
- embedded plug-ins and the Netscape browser are discussed in further detail in the S. Kronick, Netscape Navigator Handbook , Netscape Communications Corp., ed. Aug. 1, 1996, available on the Internet via http://home netscape.com/eng/mozilla/3.0/handbook/, which is incorporated herein by reference.
- the injection system of the present invention can conditionally modify any WEB page that abides by the HTML format to include an additional user interface component.
- the injection system can be used to insert a specific set of menus supplied by a third party vendor into the user's current browser. Because the injection system techniques can ensure that an instance of the injectable component is only generated if it is not already displayed, the user will see only one set of these menus displayed no matter in what order the user navigates to the various WEB pages.
- the injectable component can specify a set of links to a weather forecast, such as those shown in FIG. 3.
- FIG. 5 is a block diagram of a general purpose computer system for practicing embodiments of the injection system.
- the computer system 501 contains a central processing unit (CPU) 502 , a display 503 , a computer memory (memory) 505 , or other computer-readable memory medium, and other input/output devices 504 .
- the injection system 507 preferably resides in the memory 505 and executes on the CPU 502 .
- the interceptor code 508 of the injection system 507 is shown with a local copy of the injectable component code 509 in the memory of the computer system after the injection system has been installed on the computer system 501 .
- browser code 506 is also shown residing in the memory 505 , along with an HTML document 510 , after the injected code has already been injected; an object class registry 511 , which is used to support communication with the injection system and to create objects; and the network interface code 512 , which is used to interface with the network.
- Other programs not shown also reside in the memory 505 .
- the preferred injection system can also be implemented in a distributed environment where the various programs shown as currently residing in the memory 505 are distributed among several computer systems.
- the browser code 506 may reside on a different computer system from the interceptor code 508 and from the injectable component 509 .
- the injection system of the present invention is installed as an intermediary between the user's current browser and any server with which the browser communicates.
- the injection system is installed.
- a user may explicitly install the injection system by navigating to a predetermined location (an HTML document) on the network.
- the user may have received an HTML document from some other means, such as via an email message, which contains the injected code that is used to create an instance of the injectable user interface component.
- the browser recognizes that it does not have the code that corresponds to the injectable component that is specified by the HTML tag definition and attempts to use a location that is designated by the HTML tag to download the needed code.
- the document downloaded from the designated location preferably corresponds to the predetermined location above, and the user is then given the option to install the injection system at that time just as if the user were explicitly installing the injection system.
- the interceptor code is installed as the current proxy and the injected code is then automatically inserted into each HTML document received by the browser.
- the browser installs the injection system. Thereafter, each time the browser receives an HTML document, the browser executes the injected code inserted by the interceptor code and conditionally generates an instance of the specified injectable component by simply parsing and interpreting the HTML document using its normal mechanisms.
- FIGS. 6 - 14 describe the installation, injection, and execution techniques in more detail and illustrate sample code injected by the interceptor code module.
- FIG. 6 is an overview flow diagram of the steps executed by a browser to install the injection system and to properly parse and interpret the HTML document such that the injectable component is conditionally generated.
- the browser downloads an HTML document, which enables the user to install the injection system by executing an installation program.
- the steps performed by the installation program are described in detail with reference to FIG. 7.
- the browser sends an HTTP-request to a designated server.
- the browser receives a corresponding HTTP-response from the previously designated server, and in step 604 , extracts, parses and interprets the HTML document contained within the HTTP-response in order to properly process the HTML document.
- FIG. 7 is a flow diagram of the steps performed to install the injection system of the present invention. These steps can be provided by a standard installation and set-up program, which provides a standard interface for installing files previously packaged by a vendor. To produce such a program, the vendor provides to an installation building program a set of files to be installed, designates where the files should be installed on the target machine, and provides various other parameters. The installation building program uses these files and the specified parameters to produce an installation program (such as “setup.exe”), which is then executed by an end user to install the files.
- the steps shown in FIG. 7 are the steps provided when the created installation program is actually executed by the user on the target machine. These steps are responsible for unloading the files provided by the vendor and for placing them in the proper locations on the target machine.
- the installation program for the injection system is responsible for installing the interceptor code as the new proxy server for the browser.
- step 701 the install program uncompresses the file built by the supplier of the injection system and downloads the interceptor code module to local storage.
- step 702 the install program uncompresses and downloads a copy of the code that implements the injectable component to local storage.
- step 703 the installation program installs the injectable component code into an object class registry, such as the object class registry 511 shown in FIG. 5.
- the object class registry provides a mechanism, given a CLASSID (class identifier) of an object, to locate the appropriate code to load and execute in order to implement the object.
- the object class registry provides a global data storage mechanism for storing information needed by the browser or by the interceptor code.
- the installation code resets a browser property that indicates the current proxy server of the browser to indicate the newly downloaded interceptor code module.
- the steps for resetting the proxy server property are described in detail with reference to FIG. 8.
- the installation program clears out any local copies of HTML documents. This step is performed to ensure that any HTML documents read by the browser after the injection system has been installed properly contain an instance of the injectable component.
- step 706 the installation program changes the start-up procedure of the computer system to automatically begin executing the interceptor code module when the operating system is started, for example, at boot time.
- step 707 the installation program displays a message to the user to restart the operating system to enable the newly designated proxy server (the interceptor code) to operate. The installation program then returns.
- FIG. 8 is a flow diagram of the steps performed by an installation program to install interceptor code as a new proxy server.
- Each browser implementation preferably provides a property for indicating the proxy server to be used to connect to the network, although any globally accessible indicator would be operable. Further, each such proxy server property is preferably stored in the class registry, although any storage mechanism accessible to the browser, the operating system, and the interceptor code would be operable.
- the installation code determines which proxy server property to modify based upon either the existence of a common proxy server designation or based upon a user designation. In particular, in step 801 , the installation code determines whether any proxy servers have been specified for any browser and, if so, continues in step 802 , else continues in step 806 .
- step 802 the installation code determines whether the proxy server properties for all of the available browsers designate the same proxy server and, if so, continues in step 804 , else continues in step 803 .
- step 803 if different proxy servers have been designated by different browsers, then the installation code determines, preferably by prompting the user, which is the user's preferred (or default) browser, retrieves the proxy server property designation for that browser, and then continues in step 805 . If, instead, a common proxy server has been specified for all of the available browsers, then in step 804 , the installation code verifies that the user desires to use this proxy server and continues in step 805 .
- step 805 the installation code saves in the registry an indication of the proxy server designated by the determined proxy server property for later use by the interceptor code.
- step 806 the installation code determines an available network port for the interceptor code to use to send and receive HTTP messages.
- One mechanism for performing this step is for the installation code to attempt to bind to a socket defined by the underlying communications protocol.
- the installation code locates an available socket, then in step 807 , the installation code records this socket address as a network port in the registry, so that the interceptor code can later retrieve this port from the registry.
- step 808 the installation code changes the value indicated by the determined proxy server property to indicate the interceptor code, and then returns.
- FIG. 9 is a flow diagram of the steps performed by the interceptor code to process HTTP messages. These steps perform HTTP message forwarding for both HTTP-responses and HTTP-requests.
- code is injected into the HTML document and the response is forwarded to the browser.
- HTTP-request from the browser
- the interceptor code optionally determines whether to update the code that implements the injectable component and forwards the request to the appropriate server.
- step 901 the interceptor code gets the next HTTP message from the network.
- step 902 the interceptor code determines whether the message specifies an HTTP-request and, if so, continues in step 903 , else continues in step 905 .
- step 903 the interceptor code determines whether to update the injectable component code that was previously downloaded to the local client machine. This step is discussed in detail with respect to FIG. 15. One skilled in the art will recognize that this step may be eliminated if the injectable component code is always downloaded by a browser at the time the code is needed. One skilled in the art will also recognize that this step can be performed at other times.
- step 904 the interceptor code determines the previously saved proxy server designation from the registry.
- step 905 the routine forwards the HTTP-request to the determined proxy server and returns to the beginning of the loop in step 901 to process additional HTTP messages.
- the saved proxy server designation may indicate that no proxy server was in use.
- the HTTP-request is forwarded to the target server designated in the HTTP-request, whose location is specified by a URI contained in the request.
- the interceptor code determines whether the packet is an HTTP-response and, if so, continues in step 907 , else continues in step 904 to simply forward the request to the appropriate proxy server (if one exists).
- step 907 the interceptor code determines whether the HTTP-response contains an HTML document and, if so, continues in step 908 , else continues in step 910 .
- step 908 the interceptor code performs error checking and potentially determines various parameters needed to inject the code, for example, the type of browser that originated the corresponding HTTP-request.
- step 909 the interceptor code injects code into the HTML document, the exact code being based upon the contents of the HTML document and the type of browser being used.
- step 910 the interceptor code forwards the HTTP-response, with the injected code if injected, and returns to the beginning of the HTTP message processing loop in step 901 .
- the interceptor code acting as the proxy server injects different code into each received HTML document based upon several parameters.
- certain code is inserted when the HTML document contains a ⁇ FRAMESET> tag and other code is inserted when the HTML document contains a ⁇ BODY> tag.
- different code is generated based upon the default scripting language specified in the HTML document and the type of dynamic objects that the target browser supports. The type of the target browser is indicated in the original HTTP-request to which the current HTTP-response being processed corresponds.
- the exact procedures for injecting HTML code based upon these parameters is discussed in greater detail with respect to FIG. 10. Further, examples of the injected code are discussed below in detail with reference to Tables 1-8.
- FIG. 10 is a flow diagram of the steps performed by the interceptor code to inject code into an HTML document.
- the interceptor determines the type of browser that has requested the HTML document and certain other features regarding the HTML document before it determines what code to inject into the HTML document.
- the interceptor injects code that conditionally writes an Active-X component HTML statement into the HTML document when the browser parses and interprets the HTML document.
- the interceptor injects code that conditionally writes an embedded plug-in HTML statement into the HTML document.
- the injection routine retrieves the first such designation and injects code in the designated language.
- the first script language tag is preferably used because, according to convention, it determines the default script language for the rest of the document. If instead the interceptor code were to inject code written in a different script language than that specified by the first script language tag and were to insert this code (with a new script language tag) at the beginning of the HTML document, then potentially scripts originally present in the HTML document would not work properly because they may be parsed according to a different language. Also, certain code is inserted when a ⁇ FRAMESET> tag is present in the HTML document and other code is inserted when a ⁇ BODY> tag is present in the HTML document. One skilled in the art will recognize that other parameters may be accounted for by the code and that the code could contain statements other than those reflected in the examples below.
- step 1001 the interceptor code parses the HTML document to determine the first (if any) script language specified and whether there are any ⁇ FRAMESET> tags present.
- step 1002 the interceptor code determines whether the first script language tag indicates that Javascript is the default script language and, if so, continues in step 1004 , else continues in step 1003 .
- step 1003 if the default script language is VBscript, then the interceptor continues in step 1010 to insert a script in the VBscript language, else continues in step 1004 to insert a script written in the Javascript language.
- any scripting language can be detected and code accordingly provided as long as the interceptor code is written to inject the appropriate code into the HTML document.
- step 1004 the interceptor determines whether the browser supports Active-X components, such as the MICROSOFT INTERNET EXPLORER, and, if so, continues in step 1005 , else continues in step 1006 .
- step 1005 the interceptor injects code written in Javascript which conditionally inserts an HTML tag that specifies an Active-X component, after the first ⁇ BODY> tag found in the HTML document, and continues in step 1008 .
- Table 1 provides example code for the code injected at step 1005 .
- This code in essence tests to see whether there is only one frame present and, if so, generates an ⁇ OBJECT> tag. This code is discussed in further detail in FIG. 14, which describes how a browser interprets this injected code.
- step 1006 the interceptor code determines whether the browser supports embedded plug-in modules and, if so, continues in step 1007 , else returns.
- step 1007 the interceptor code injects code written in Javascript, which conditionally inserts an HTML tag that specifies an embedded plug-in, after the first ⁇ BODY> tag found in the HTML document, and continues in step 1008 .
- Table 2 provides example code for the code injected into the HTML document in step 1007 .
- This code in essence tests to see whether there is only one frame present and, if so, generates an ⁇ EMBED> tag. This code is discussed in further detail with respect to FIG. 13, which describes how a browser interprets this code.
- Table 3 provides an overall example of what an HTML document that includes a ⁇ BODY> tag definition looks like after code written in Javascript is injected when the default language specified is Javascript and the target browser supports Active-X components.
- the injected code beginning with the ⁇ SCRIPT LANGUAGE . . . > tag and ending with the ⁇ /SCRIPT> tag is inserted after the first ⁇ BODY> tag statement located in the HTML document.
- step 1008 the interceptor code determines whether there is a ⁇ FRAMESET> tag present in the HTML document and, if so, continues in step 1009 , else returns.
- step 1009 the interceptor code injects code written in Javascript, which conditionally inserts a new ⁇ FRAMESET> tag definition around the first located ⁇ FRAMESET> tag definition, and then returns.
- a closing ⁇ /FRAMESET> tag is preferably always injected into the HTML document. This ending tag is typically ignored by a browser if ⁇ FRAMESET> tags are not present in the document. Otherwise, the appropriate closing ⁇ /FRAMESET> tag is inserted in an appropriate location in the HTML document.
- Table 4 provides example code for the code injected into the HTML document in step 1009 .
- the code tests to see whether there is only one frame present and, if so, generates a new frameset that points to the appropriate injectable component tag definition.
- Table 5 provides an overall example of what an HTML document that contains a ⁇ FRAMESET> tag definition looks like after code is injected, when the default language specified is Javascript or no language was specified.
- This table contains the same code as Table 4, except that the injected code is shown in context.
- the injected code begins with the ⁇ SCRIPT LANGUAGE> tag and ends with the ⁇ /SCRIPT> tag.
- Each frameset defines one or more frames and specifies a source document to be used to fill the frames. Note that the URL that is specified for the source document of the frame in this case points to the appropriate code, as shown in Table 1 or 2, depending upon whether the browser supports Active-X components or embedded plug-ins.
- Step 1003 if the interceptor code determines that the default language specified is VBscript, then the routine continues in step 1010 .
- Steps 1010 - 1015 operate analogously to steps 1004 - 1009 , except that they insert code written in VBscript instead of Javascript.
- Table 6 provides example code for the code injected into the HTML document in step 1011 .
- This code conditionally inserts an Active-X component HTML statement into the HTML document when the browser parses and interprets the HTML document.
- Table 7 provides example code for the code injected into the HTML document in step 1013 .
- This code conditionally inserts an embedded plug-in HTML statement into the HTML document when the browser parses and interprets the HTML document.
- Table 8 provides example code for the code injected into the HTML document in step 1015 , when a ⁇ FRAMESET> tag is present.
- FIG. 11 is an overview flow diagram of the steps performed by a browser to parse and interpret an HTML document. These steps correspond to step 604 in FIG. 6.
- the browser parses and interprets the HTML document. When it parses and interprets the code injected by the interceptor code, it conditionally writes the appropriate HTML tags into the HTML document. The details of this step are discussed further with reference to FIG. 12.
- the browser interprets this HTML code to build an instance of the injectable component. The details of this step are disclosed further with reference to FIGS. 13 and 14.
- FIG. 12 is a flow diagram of the steps performed by a browser to parse and interpret the injected code inserted by the interceptor code module.
- the specific steps illustrated in FIG. 12 correspond to a browser that supports Active-X components when the injected code is written in Javascript, analogous steps are performed for a browser that supports plug-ins or when the injected code is written in VBscript. Exceptions are noted below.
- the browser preferably determines whether an instance of the injectable component is already being displayed and, if so, does nothing. Otherwise, if designated by the injected code, a new ⁇ FRAMESET> tag definition is inserted into the HTML document and a new ⁇ OBJECT> tag definition is inserted into the HTML document.
- step 1201 when the browser executes the injected code placed before an existing ⁇ FRAMESET> tag (see, e.g., Table 4), then the browser determines whether an instance of the injectable component is already being displayed. If so, the browser ignores the injected code, otherwise continues in step 1202 .
- step 1202 assuming the HTML document contains injected code as shown in Table 5, then the “document.write” statements are executed. These statements generate a new ⁇ FRAMESET> definition with a frame source URL pointing to HTML code that is used to generate an instance of the injectable component (e.g., the tags shown in either Table 1 or Table 2).
- step 1203 when the browser executes the injected code placed after the ⁇ BODY> tag (see, e.g., Table 3) then the browser determines whether an instance of the injectable component is already being displayed. If so, then the browser ignores the injected code, otherwise continues in step 1204 .
- step 1204 the browser executes the “document.write” statements shown, for example, in Table 1, to insert a new HTML ⁇ OBJECT> tag definition into the HTML document.
- the ⁇ OBJECT> tag definition includes a CLASSID, the source of installation code for the injectable component, and various other parameters. Note that, if the steps of FIG.
- step 1205 the browser optionally writes out any other needed HTML code to set parameters of the instance of the injectable component, and continues.
- FIGS. 13 and 14 discuss the steps performed by a browser to parse and interpret the inserted HTML tags to generate an instance of an injectable component. These tags are inserted into the HTML document as a result of executing the injected code, which was previously inserted by the interceptor code module. These routines correspond to step 1102 in FIG. 11 for a browser that supports embedded plug-in modules and for a browser that supports Active-X components, respectively.
- FIG. 13 is a flow diagram of the steps performed by a browser that supports plug-ins when processing HTML tags.
- step 1301 if the browser detects a ⁇ FRAMESET> tag definition, then it continues in step 1302 , else continues to process other types of HTML tags.
- step 1302 the browser loads the HTML document specified by the source parameter URL of the ⁇ FRAMESET> tag and continues.
- the source parameter specifies a document that contains an ⁇ EMBED> tag, analogous to the ⁇ EMBED> tag generated by the “document.write” statements shown in Table 2.
- step 1303 when the browser detects an ⁇ EMBED> HTML tag, it continues in step 1304 , else continues to process other HTML tag definitions.
- step 1304 the browser prompts the user to load in the code for the injectable component.
- step 1305 if the user indicates a desire to load the embedded object, then the browser continues in step 1306 , else continues with other processing.
- step 1306 the browser copies to local storage the code specified by the “PLUGINSPAGE” parameter and executes the code in order to generate the embedded component.
- step 1307 the browser sets any other parameters indicated by the ⁇ EMBED> tag definition and continues with other processing.
- the HTML tags conditionally generated by the injected code are processed just as all other HTML codes in the HTML document.
- FIG. 14 is a flow diagram of the steps performed by a browser that supports Active-X components when processing HTML tags.
- step 1401 if the browser detects a ⁇ FRAMESET> tag definition, then it continues in step 1402 , else continues to process other types of HTML tags.
- step 1402 the browser loads the HTML document specified by the source parameter URL of the ⁇ FRAMESET> tag and continues.
- the source parameter specifies a document that contains an ⁇ OBJECT> tag, analogous to the ⁇ OBJECT> tags generated by the “document.write” statements shown in Table 1.
- step 1403 when the browser detects an ⁇ OBJECT> tag definition, the browser continues in step 1404 , else continues with the processing of other HTML tag definitions.
- step 1404 the browser uses the CLASSID specified in the ⁇ OBJECT> tag definition as a parameter to locate the executable code for the injectable component in the class registry.
- step 1405 the browser determines whether a local copy of the code designated in the registry is available and, if so, continues in step 1407 , else continues in step 1406 .
- step 1406 when the code is unavailable the browser runs the install injection system using the document specified by the CODEBASE parameter of the ⁇ OBJECT> tag to perform the steps discussed with reference to FIG. 7.
- step 1406 is typically executed when a user receives an HTML document that contains injected code but when the injection system of the present invention has not yet been installed. Details for how downloading is performed using a cabinet file (a file with a “.cab” extension) are provided in D. Chappell, Understanding Active - X and OLE , Microsoft Press, Redmond, 1996, which is incorporated herein by reference. In summary, the cabinet file is automatically deconstructed to yield a file (a “.INF” file) that directs the installation process.
- step 1407 when a local copy of the injectable component code is available, the browser loads and runs the injectable component code.
- the routine sets any other parameters for the injectable component that are indicated by the ⁇ OBJECT> tag, and continues with other processing.
- the interceptor code is responsible for updating the code that implements the injectable component. This procedure may be important, for example, when a local copy of the injectable component code is stored on the client machine. Recall that the interceptor code preferably determines whether this update is needed each time it receives an HTTP message that contains an HTTP-request (see, e.g., step 903 in FIG. 9).
- FIG. 15 is a flow diagram of the steps performed by the interceptor code to update the code that implements the injectable component.
- the interceptor code determines whether there is new injectable component code available and, if so, prompts the user to determine whether the user desires to install the new component.
- the user of the client machine is able to indicate the frequency by which the interceptor code should periodically determine whether a new injectable component is available.
- the injectable component itself provides a user interface that enables the user to set the frequency of the periodic update. For example, the menu 309 shown in FIG. 3 could be used for this procedure.
- the designated frequency value is preferably stored as a property in global storage, such as within the class registry.
- step 1501 the interceptor code retrieves the update frequency from a property in the registry.
- step 1502 the interceptor code determines, based upon the retrieved update frequency, whether it is time to update and, if so, continues in step 1503 , else returns.
- step 1503 the interceptor code sends an HTTP-request for a predetermined document (page) to a predetermined location (the server source machine for the injectable component). Except for the first time that such a request is made, this request includes a machine identifier (machine_ID), which is specific to the client machine. This machine_ID is returned in the first response by the designated server to an update request. In this way, a unique machine identifier is assigned to each client machine.
- machine_ID machine identifier
- step 1504 when a corresponding HTTP-response is received from the server that provides the injectable component, the interceptor code continues in step 1505 , else continues with other processing.
- the HTTP-response received preferably includes the specific machine_ID of the client machine.
- the server preferably generates the unique machine_ID from a mechanism specific to that server machine, which is responsible for keeping track of each client. Any such mechanism for tracking client machine information and generating unique identifiers is operable.
- the interceptor code extracts version information from the HTTP message (and the machine_ID if this is the first such request).
- step 1506 the interceptor code determines whether the indicated version is different from the version of the injectable component code currently installed on the user's machine and, if so, continues in step 1507 , else returns.
- step 1507 the interceptor code prompts the user to determine if the user wishes to install a new version of the injectable component code.
- step 1508 if the user indicates that installation of the new version is desired, then the interceptor code continues in step 1509 to re-install the injection system as per FIG. 7, else returns.
Abstract
A method and system for injecting code into an existing HTML document that enables the conditional generation and incorporation of an injectable component is provided. The injection mechanism provided enables a user to display an add-on user interface component within a web page using a technique that is transparent to the normal processing within a browser application. The injection mechanism installs interceptor code as a proxy server between a client browser and a server. The interceptor code monitors all HTTP messages sent from the client browser and injects code into each HTML document that is sent from a server to the client browser. The injected code when executed by the client browser conditionally inserts HTML code into the received HTML document. The inserted HTML code is then used by the client browser to generate a new component, for example a user interface component. The code injected by the interceptor code is dependent upon the type of the browser and whether certain tags are present in the received HTML document. In addition, the code may be written in a script language, such as Javascript or VBscript.
Description
- This application is a continuation of U.S. patent application Ser. No. 08/827,691 filed Apr. 8, 1997, entitled “METHOD AND SYSTEM FOR INSERTING CODE TO CONDITIONALLY INCORPORATE A USER INTERFACE COMPONENT IN AN HTML DOCUMENT.” This application is incorporated by reference in its entirety.
- The present invention relates to transparently modifying an existing document and, in particular, to injecting code into an HTML document that conditionally generates a user interface component.
- Today's computer networking environments, such as the Internet, offer mechanisms for delivering documents between heterogeneous computer systems. One such network, the World Wide WEB network, which comprises a subset of Internet sites, supports a standard protocol for requesting documents known as WEB pages and for receiving them. This protocol is known as the Hypertext Transfer Protocol, or “HTTP.” HTTP defines a high-level message passing protocol for sending and receiving packets of information between diverse applications. Details of HTTP can be found in various documents including T. Berners-Lee et al.,Hypertext Transfer Protocol—HTTP 1.0, Request for Comments (RFC) 1945, MIT/LCS, May, 1996, which is incorporated herein by reference. Each HTTP message follows a specific layout, which includes amongst other information a header, which contains information specific to the request or response. Further, each HTTP request message contains a universal resource identifier (a “URI”), which specifies to which network resource the request is to be applied. A URI is either a Uniform Resource Locator (“URL”) or Uniform Resource Name (“URN”), or any other formatted string that identifies a network resource. The URI contained in a request message, in effect, identifies the destination machine for a message. URLs, as an example of URIs, are discussed in detail in T. Berners-Lee, et al., Uniform Resource Locators (URL), RFC 1738, CERN, Xerox PARC, Univ. of Minn., December, 1994, which is incorporated herein by reference.
- FIG. 1 illustrates how a browser application enables users to navigate among nodes on the WEB network by requesting and receiving WEB pages. For the purposes of this application, a WEB page is any type of document that abides by the HTML format. That is, the document includes an “<HTML>” statement. Thus, a WEB page is also be referred to as an HTML document. The HTML format is a document mark-up language, defined by the Hypertext Markup Language (“HTML”) specification. HTML defines tags for specifying how to interpret the text and images stored in an HTML document. For example, there are HTML tags for defining paragraph formats and for emboldening and underlining text. In addition, the HTML format defines tags for adding images to documents and for formatting and aligning text with respect to images. HTML tags appear between angle brackets, for example, <HTML>. Further details of HTML are discussed in T. Berners-Lee and D. Connolly,Hypertext Markup Language-2.0, RFC 1866, MIT/W3C, November, 1995, which is incorporated herein by reference.
- In FIG. 1, a
WEB browser application 101 is shown executing on aclient machine 102, which communicates with aserver machine 103 by sending and receiving HTTP packets (messages).Web browser 101 “navigates” to new locations on the network to browse (display) what is available at these locations. In particular, whenWEB browser 101 “navigates” to a new location, it requests a new document from the new location (e.g., server machine 103) by sending an HTTP-request message 104 using any well-known underlying communications wire protocol. HTTP-request message 104 follows the specific layout discussed above, which includes aheader 105 and aURI field 106, which specifies the network location to which to apply the request. When the server machine specified by URI 106 (e.g., server machine 103) receives the HTTP-request message, it decomposes the message packet and constructs a return message packet to the source location that originated the message (e.g., client machine 102) in the form of an HTTP-response message 107. In addition to the standard features of an HTTP message, such as theheader 108, the HTTP-response message 107 contains the requested HTMLdocument 109. When the HTTP-response message 107 reaches theclient machine 102, theWEB browser application 101 extracts the HTMLdocument 109 from the message, and parses and interprets (executes) the HTML code in the document in order to display the document on a display screen of theclient machine 102 as specified by the is HTML tags. - To provide additional security in a global network environment, some WEB browser applications incorporate the use of an intermediary machine between the client machine and other machines on the WEB. For example, several client machines may be networked internally to a proxy server machine, which acts as a “firewall” between the client machines and server machines on an external network. FIG. 2 illustrates the use of a proxy server machine to send and receive HTTP documents. The
WEB browser application 201, which is shown executing on aclient machine 202, sends an HTTP-request message 205 to aserver machine 203. The server machine (e.g., server machine 203) is specified by the URIfield 206 contained in the HTTP-request message 205. However, in contrast to FIG. 1, the HTTP-request message 205 is sent first to aproxy server machine 204, which then forwards the HTTP-request message 205 asmessage 207 to theserver machine 203. Because theproxy server machine 204 contains a separate external network connection toserver machine 203, theclient machine 202 is protected from ill-behaved applications, which may be executing on or accessible viaserver machine 203. For example, the proxy server machine may be specially programmed to detect viruses that may be sent in an HTTP-response message. When the HTTP-request message 207 is received,server machine 203 sends an HTTP-response message 208, which contains the requested HTMLdocument 209, to the originator of the message. This time, the originator of the message is theproxy server 204. Thus, the HTTP-response message 208 is first sent to theproxy server machine 204 before the requested document is delivered toclient machine 202. Theproxy server machine 204, by having previously established a specific network connection for the original HTTP-request message 205 received from theclient machine 202, knows that the received HTTP-response message 208 corresponds to the HTTP-request message 205 and thus forwards the HTTP-response message 208 asHTTP message 210 to theclient machine 202. TheWEB browser application 201 is then responsible for decomposing the HTTP-response message 210 to extract the HTML document and for executing the HTML code in the received document to properly display the document onclient machine 202. - In network environments such as those shown in FIGS. 1 and 2, WEB browser applications, such as
WEB browser 101, have attempted to make the navigational process easier for users by adding various “links” to places of interest. These links can be used to navigate to a pre-specified location by simple maneuvers, such as clicking on a graphical button on a screen. A link in this context refers to a URI, which is used by the browser application to locate another document. For example, a WEB browser may provide graphical buttons, which are placed below the standard menus in toolbars. These buttons provide links that enable a user to easily navigate to specific locations defined by the developer of the WEB browser. In order to ensure that such links are present in every WEB page displayed, the browser application must include special code to display these graphical button user interface components. Thus, when a user invokes a different WEB browser application, the user may not have access to links to which the user has become accustomed. - The present invention provides a method and system for injecting code into an existing HTML document that enables the conditional generation and incorporation of injectable components by a browser application. The injection mechanism provided by the present invention enables a user to incorporate add-on components in a WEB page that is displayed by any browser application. These add-on components may provide an additional user interface capability to the browser application. Also, the injection mechanism is able to ensure that the add-on component is generated only under certain conditions, for example, when the component is not already being displayed by the browser application.
- In one embodiment, the injection mechanism installs interceptor code as a proxy server to intercept HTTP messages between client code and server code. The interceptor code monitors HTTP messages sent from the client and is responsible for injecting code into HTML documents that are sent from servers to the client. The injected code, when executed by a client browser, conditionally inserts HTML code into the HTML document, which is then used by the browser to generate a new component, for example, a user interface component. In one embodiment, the user interface component is conditionally generated when the browser is not already displaying an instance of the component.
- In another embodiment, the code supporting the injectable component is previously downloaded to a client machine. The injection mechanism provides a means for updating this downloaded code. According to one embodiment, the interceptor code is responsible for providing periodic updates to the code that supports the injectable component. In another embodiment, the code supporting the injectable component is downloaded whenever it is displayed.
- The injection mechanism also provides the ability to inject code into both HTML documents that support HTML framesets and those that do not. HTML framesets enable a page author to specify a hierarchical organization of sub-pages within a page. When injecting code into an HTML document that contains an existing frameset, the interceptor code injects code that conditionally generates a new frameset tag statement, which surrounds the existing frameset. The new frameset, when generated, specifies a frame that contains sufficient information to generate an instance of the injectable component. In HTML documents that do not contain framesets or for browsers that do not support framesets, the interceptor code injects code into the body portion of the HTML document. This injected code conditionally inserts an additional HTML tag that is used by a browser to generate an object that corresponds to the injectable component. In one embodiment, the injected code inserted by the interceptor code is written in a script language, such as Javascript or VBscript.
- As another aspect of the invention, the interceptor code installed as the proxy server is responsible for detecting whether the browser supports Active-X type objects, such as Microsoft's browser, or supports embedded plug-ins, such as Netscape's browser. The interceptor codes injects code that produces the correct component depending upon the browser mechanism.
- FIG. 1 illustrates how a browser application enables users to navigate among nodes on the WEB network by requesting and receiving WEB pages.
- FIG. 2 illustrates the use of a proxy server machine to send and receive HTTP documents.
- FIG. 3 is a block diagram illustrating an injectable component that has been incorporated into an existing HTML document without modifying the browser using the injection system of the present invention.
- FIG. 4 provides an overview block diagram of the techniques used by the injection system of the present invention to modify the actions of a browser to include an injectable component.
- FIG. 5 is a block diagram of a general purpose computer system for practicing embodiments of the injection system.
- FIG. 6 is an overview flow diagram of the steps executed by a browser to install the injection system and to properly parse and interpret the HTML document such that the injectable component is conditionally generated.
- FIG. 7 is a flow diagram of the steps performed to install the injection system of the present invention.
- FIG. 8 is a flow diagram of the steps performed by an installation program to install interceptor code as a new proxy server.
- FIG. 9 is a flow diagram of the steps performed by the interceptor code to process HTTP messages.
- FIG. 10 is a flow diagram of the steps performed by the interceptor code to inject code into an HTML document.
- FIG. 11 is an overview flow diagram of the steps performed by a browser to parse and interpret an HTML document.
- FIG. 12 is a flow diagram of the steps performed by a browser to parse and interpret the injected code inserted by the interceptor code module.
- FIG. 13 is a flow diagram of the steps performed by a browser that supports plug-ins when processing HTML tags.
- FIG. 14 is a flow diagram of the steps performed by a browser that supports Active-X components when processing HTML tags.
- FIG. 15 is a flow diagram of the steps performed by the interceptor code to update the code that implements the injectable component.
- The present invention provides a method and system for transparently incorporating an injectable component, such as a user interface component, into an existing HTML document when the document is processed by a browser application (a “browser”) that supports HTML. Specifically, the present invention provides an injection system that injects code into HTML documents. The injected code causes an instance of an injectable component to be transparently generated by the browser under certain conditions, for example, when an instance of the injectable component is not already being displayed. The browser transparently generates the new component by executing the injected code during its normal processing of HTML documents. Specifically, when the browser executes the injected code, HTML tags are conditionally inserted into the document. These tags then automatically cause the browser to generate the instance of the injectable component. In this manner, the decision as to whether to create the instance of the injectable component is delayed until the actual processing of the HTML document by the browser.
- To accomplish these functions, the injection system of the present invention provides an injectable component, such as a user interface object, and interceptor code for injecting, into every HTML document, code that conditionally generates an instance of the injectable component. The injection system operates by installing the interceptor code as a new proxy server between the user's current browser and a proxy server, if one exists. If a proxy server has not been previously established by the user, then the interceptor code is installed between the current browser and the network. The interceptor code then monitors HTTP messages sent between the browser and the pre-existing proxy server (or a destination server) and injects code into each HTML document returned in an HTTP-response message intended for the browser. The injected code in each HTML document is then processed by the browser as described to conditionally generate an instance of the injectable component. Thus, the injection system enables a user to supplement the user's browser with the additional functionality of the injectable component, without modifying the browser, by intercepting HTTP messages and placing code in HTML documents that causes the additional behavior to appear.
- FIG. 3 is a block diagram illustrating an injectable component that has been incorporated into an existing HTML document without modifying the browser using the injection system of the present invention.
Browser window 301 contains its own control areas, such as browserwindow control area 302 andscrollbar area 304, and anapplication window area 303, which is used to display HTML documents. The HTML document currently displayed in theapplication window 303 contains injecteduser interface component 305 and three pre-existing frames of the HTML document, frames 306, 307, and 308. The example injecteduser interface component 305 contains a drop-down menu 309 and severalgraphical buttons 310, which provide links to portions of a 5-day weather forecast.User interface component 305 enables a user to have near-immediate access to the 5-day weather forecast from all HTML documents that are displayed within thebrowser window 301. One skilled in the art will recognize that any contents can be displayed as theinjectable component 305, providing the appropriate links and embedded objects can be created by the browser. Thus, the present invention is not limited to providing weather forecasts or static information but rather may be used to provide any kind of static or dynamic information, interface, or component. - The injection system of the present invention provides a technique for injecting a user interface component, such as the weather forecast bar shown in FIG. 3, each time an HTML document is newly loaded into the
browser application window 303. Moreover, the injection system provides a technique for ensuring that only one instance of the injectable component is generated and displayed in thebrowser application window 303, regardless of which HTML document is loaded, in what order, or from what source. - FIG. 4 provides an overview block diagram of the techniques used by the injection system of the present invention to modify the actions of a browser to include an injectable component. Before the installation of the injection system, the
WEB browser 401 sends and receives HTTP messages to a proxy server (or destination server) 403 as previously discussed with respect to FIGS. 1 and 2. As shown in FIG. 4, after the injection system of the present invention is installed,WEB browser 401 sends HTTP messages to and receives HTTP messages from aninterceptor code module 402, which is installed as the current proxy server.Interceptor code module 402 is responsible for forwarding all HTTP requests and responses through the pre-existing proxy server if one existed prior to installation of the interceptor code module. As shown,WEB browser 401 sends an HTTP-request message 404 for an HTML document tointerceptor code module 402, which forwards the request as an HTTP-request message 405 to the previously designated proxy server or adestination server 403. (Hereinafter these messages are simply referred to as HTTP-requests and HTTP-responses.) Once the destination server provides an HTTP-response corresponding to the HTTP-request, the HTTP-response is forwarded (through the pre-existing proxy server if designated) as HTTP-response message 406 to theinterceptor code module 402. Once received, theinterceptor code module 402 determines whether the HTTP-response includes an HTML document (e.g., document 407) and, if so, modifies the contents of the HTML document to inject code, shown as injectedcode 408. The injectedcode 408 is used later by the browser to conditionally generate an instance of the injectable component. Once theHTML document 407 is modified, theinterceptor code module 402 returns theHTML document 407 with injectedcode 408 in an HTTP-response 409 to theWEB browser 401. TheWEB browser 401 then decomposes the HTTP-response 409 to extract theHTML document 407 and executes any code present in thedocument 407 in order to display the document ondisplay 410 as specified by the code. The code processed by the browser may include any browser supported code, such as scripts or HTML tag statements. - The injected
code 408, which is injected into the HTTP-response 409 byinterceptor code module 402, contains instructions that specifically cause theWEB browser 401 to conditionally insert HTML tag statements (HTML code) into thedocument 407 when the browser executes the injected code. The HTML code is used by theWEB browser 401 to generate and display an instance of the injectable component. The conditions are determined by the injected code itself. In one embodiment, the injected code is written to only insert these HTML tag statements when the component is not already being displayed. Thus, the injected code, when executed, detects when the specified condition is met. Then, when the specified condition is met, through its normal processing of the HTML code in theHTML document 407, theWEB browser 401 creates an instance of the component that is specified by the inserted HTML code. In one embodiment of the present invention, the inserted HTML code specifies an <OBJECT> tag, which defines an Active-X component for browsers that support Active-X components, such as the Microsoft Internet Explorer. Active-X components and the Microsoft Internet Explorer are defined in greater detail in J. O'Donnell et al., Special Edition Using Microsoft Internet Explorer 3, QUE Corp., 1996, which is incorporated herein by reference. In another embodiment, the inserted HTML code specifies an <EMBED> tag, which defines an embedded plug-in object for browsers that support embedded plug-ins, such as the Netscape browser. Embedded plug-ins and the Netscape browser are discussed in further detail in the S. Kronick, Netscape Navigator Handbook, Netscape Communications Corp., ed. Aug. 1, 1996, available on the Internet via http://home netscape.com/eng/mozilla/3.0/handbook/, which is incorporated herein by reference. - Thus, using the injection system of the present invention, one can conditionally modify any WEB page that abides by the HTML format to include an additional user interface component. For example, the injection system can be used to insert a specific set of menus supplied by a third party vendor into the user's current browser. Because the injection system techniques can ensure that an instance of the injectable component is only generated if it is not already displayed, the user will see only one set of these menus displayed no matter in what order the user navigates to the various WEB pages. As another example, the injectable component can specify a set of links to a weather forecast, such as those shown in FIG. 3.
- In a preferred embodiment, the methods and systems of the injection system are implemented on a computer system comprising a central processing unit, a display, a memory, and other input/output devices. Preferred embodiments are designed to operate in a globally networked environment, such as a computer system that is connected to the Internet. FIG. 5 is a block diagram of a general purpose computer system for practicing embodiments of the injection system. The
computer system 501 contains a central processing unit (CPU) 502, adisplay 503, a computer memory (memory) 505, or other computer-readable memory medium, and other input/output devices 504. Theinjection system 507 preferably resides in thememory 505 and executes on theCPU 502. The interceptor code 508 of theinjection system 507 is shown with a local copy of theinjectable component code 509 in the memory of the computer system after the injection system has been installed on thecomputer system 501. In addition,browser code 506 is also shown residing in thememory 505, along with anHTML document 510, after the injected code has already been injected; anobject class registry 511, which is used to support communication with the injection system and to create objects; and thenetwork interface code 512, which is used to interface with the network. Other programs not shown also reside in thememory 505. One skilled in the art will recognize that the preferred injection system can also be implemented in a distributed environment where the various programs shown as currently residing in thememory 505 are distributed among several computer systems. For example, thebrowser code 506 may reside on a different computer system from the interceptor code 508 and from theinjectable component 509. - As discussed above, to be operable, the injection system of the present invention is installed as an intermediary between the user's current browser and any server with which the browser communicates. There are two ways the injection system is installed. First, a user may explicitly install the injection system by navigating to a predetermined location (an HTML document) on the network. Alternatively, the user may have received an HTML document from some other means, such as via an email message, which contains the injected code that is used to create an instance of the injectable user interface component. When the injected code is executed, the browser recognizes that it does not have the code that corresponds to the injectable component that is specified by the HTML tag definition and attempts to use a location that is designated by the HTML tag to download the needed code. The document downloaded from the designated location preferably corresponds to the predetermined location above, and the user is then given the option to install the injection system at that time just as if the user were explicitly installing the injection system. Once the injection system is installed, the interceptor code is installed as the current proxy and the injected code is then automatically inserted into each HTML document received by the browser.
- Thus, in summary, the browser installs the injection system. Thereafter, each time the browser receives an HTML document, the browser executes the injected code inserted by the interceptor code and conditionally generates an instance of the specified injectable component by simply parsing and interpreting the HTML document using its normal mechanisms. FIGS.6-14 describe the installation, injection, and execution techniques in more detail and illustrate sample code injected by the interceptor code module.
- FIG. 6 is an overview flow diagram of the steps executed by a browser to install the injection system and to properly parse and interpret the HTML document such that the injectable component is conditionally generated. Specifically, in
step 601, the browser downloads an HTML document, which enables the user to install the injection system by executing an installation program. The steps performed by the installation program are described in detail with reference to FIG. 7. At some point during processing, instep 602, the browser sends an HTTP-request to a designated server. At some other point during processing, the browser receives a corresponding HTTP-response from the previously designated server, and instep 604, extracts, parses and interprets the HTML document contained within the HTTP-response in order to properly process the HTML document. - FIG. 7 is a flow diagram of the steps performed to install the injection system of the present invention. These steps can be provided by a standard installation and set-up program, which provides a standard interface for installing files previously packaged by a vendor. To produce such a program, the vendor provides to an installation building program a set of files to be installed, designates where the files should be installed on the target machine, and provides various other parameters. The installation building program uses these files and the specified parameters to produce an installation program (such as “setup.exe”), which is then executed by an end user to install the files. Thus, the steps shown in FIG. 7 are the steps provided when the created installation program is actually executed by the user on the target machine. These steps are responsible for unloading the files provided by the vendor and for placing them in the proper locations on the target machine. In addition, the installation program for the injection system is responsible for installing the interceptor code as the new proxy server for the browser.
- Specifically, in
step 701, the install program uncompresses the file built by the supplier of the injection system and downloads the interceptor code module to local storage. Instep 702, the install program uncompresses and downloads a copy of the code that implements the injectable component to local storage. One skilled in the art will recognize that this step may be eliminated if the code supporting the injectable component can be downloaded later when an instance of the component is generated. Instep 703, the installation program installs the injectable component code into an object class registry, such as theobject class registry 511 shown in FIG. 5. The object class registry provides a mechanism, given a CLASSID (class identifier) of an object, to locate the appropriate code to load and execute in order to implement the object. For the purposes of the present invention, the object class registry provides a global data storage mechanism for storing information needed by the browser or by the interceptor code. One skilled in the art will recognize that other mechanisms that provide similar global storage functions could be substituted, for example, a standard database. Instep 704, the installation code resets a browser property that indicates the current proxy server of the browser to indicate the newly downloaded interceptor code module. The steps for resetting the proxy server property are described in detail with reference to FIG. 8. Instep 705, the installation program clears out any local copies of HTML documents. This step is performed to ensure that any HTML documents read by the browser after the injection system has been installed properly contain an instance of the injectable component. Instep 706, the installation program changes the start-up procedure of the computer system to automatically begin executing the interceptor code module when the operating system is started, for example, at boot time. Instep 707, the installation program displays a message to the user to restart the operating system to enable the newly designated proxy server (the interceptor code) to operate. The installation program then returns. - FIG. 8 is a flow diagram of the steps performed by an installation program to install interceptor code as a new proxy server. Each browser implementation preferably provides a property for indicating the proxy server to be used to connect to the network, although any globally accessible indicator would be operable. Further, each such proxy server property is preferably stored in the class registry, although any storage mechanism accessible to the browser, the operating system, and the interceptor code would be operable. The installation code determines which proxy server property to modify based upon either the existence of a common proxy server designation or based upon a user designation. In particular, in
step 801, the installation code determines whether any proxy servers have been specified for any browser and, if so, continues instep 802, else continues instep 806. Instep 802, the installation code determines whether the proxy server properties for all of the available browsers designate the same proxy server and, if so, continues instep 804, else continues instep 803. Instep 803, if different proxy servers have been designated by different browsers, then the installation code determines, preferably by prompting the user, which is the user's preferred (or default) browser, retrieves the proxy server property designation for that browser, and then continues instep 805. If, instead, a common proxy server has been specified for all of the available browsers, then instep 804, the installation code verifies that the user desires to use this proxy server and continues instep 805. Instep 805, the installation code saves in the registry an indication of the proxy server designated by the determined proxy server property for later use by the interceptor code. Instep 806, the installation code determines an available network port for the interceptor code to use to send and receive HTTP messages. One mechanism for performing this step is for the installation code to attempt to bind to a socket defined by the underlying communications protocol. When the installation code locates an available socket, then instep 807, the installation code records this socket address as a network port in the registry, so that the interceptor code can later retrieve this port from the registry. Instep 808, the installation code changes the value indicated by the determined proxy server property to indicate the interceptor code, and then returns. - Once installed, the interceptor code acting as a proxy server injects code that causes the conditional generation of an injectable component in each HTML document received by the interceptor code. FIG. 9 is a flow diagram of the steps performed by the interceptor code to process HTTP messages. These steps perform HTTP message forwarding for both HTTP-responses and HTTP-requests. When an HTTP-response is detected, code is injected into the HTML document and the response is forwarded to the browser. When an HTTP-request (from the browser) is detected, the interceptor code optionally determines whether to update the code that implements the injectable component and forwards the request to the appropriate server.
- Specifically, in
step 901, the interceptor code gets the next HTTP message from the network. Instep 902, the interceptor code determines whether the message specifies an HTTP-request and, if so, continues instep 903, else continues instep 905. Instep 903, the interceptor code determines whether to update the injectable component code that was previously downloaded to the local client machine. This step is discussed in detail with respect to FIG. 15. One skilled in the art will recognize that this step may be eliminated if the injectable component code is always downloaded by a browser at the time the code is needed. One skilled in the art will also recognize that this step can be performed at other times. Instep 904, the interceptor code determines the previously saved proxy server designation from the registry. Instep 905, the routine forwards the HTTP-request to the determined proxy server and returns to the beginning of the loop instep 901 to process additional HTTP messages. Note that the saved proxy server designation may indicate that no proxy server was in use. In that case, the HTTP-request is forwarded to the target server designated in the HTTP-request, whose location is specified by a URI contained in the request. Instep 906, the interceptor code determines whether the packet is an HTTP-response and, if so, continues instep 907, else continues instep 904 to simply forward the request to the appropriate proxy server (if one exists). Instep 907, the interceptor code determines whether the HTTP-response contains an HTML document and, if so, continues instep 908, else continues instep 910. Instep 908, the interceptor code performs error checking and potentially determines various parameters needed to inject the code, for example, the type of browser that originated the corresponding HTTP-request. Instep 909, the interceptor code injects code into the HTML document, the exact code being based upon the contents of the HTML document and the type of browser being used. Instep 910, the interceptor code forwards the HTTP-response, with the injected code if injected, and returns to the beginning of the HTTP message processing loop instep 901. - The interceptor code acting as the proxy server injects different code into each received HTML document based upon several parameters. In particular, certain code is inserted when the HTML document contains a <FRAMESET> tag and other code is inserted when the HTML document contains a <BODY> tag. Also, different code is generated based upon the default scripting language specified in the HTML document and the type of dynamic objects that the target browser supports. The type of the target browser is indicated in the original HTTP-request to which the current HTTP-response being processed corresponds. The exact procedures for injecting HTML code based upon these parameters is discussed in greater detail with respect to FIG. 10. Further, examples of the injected code are discussed below in detail with reference to Tables 1-8.
- FIG. 10 is a flow diagram of the steps performed by the interceptor code to inject code into an HTML document. As mentioned above, the interceptor determines the type of browser that has requested the HTML document and certain other features regarding the HTML document before it determines what code to inject into the HTML document. In particular, if the browser supports Active-X components, then the interceptor injects code that conditionally writes an Active-X component HTML statement into the HTML document when the browser parses and interprets the HTML document. Alternatively, if the browser supports embedded plug-ins, then the interceptor injects code that conditionally writes an embedded plug-in HTML statement into the HTML document. Also, if the HTML document includes a designation of a script language, then the injection routine retrieves the first such designation and injects code in the designated language. The first script language tag is preferably used because, according to convention, it determines the default script language for the rest of the document. If instead the interceptor code were to inject code written in a different script language than that specified by the first script language tag and were to insert this code (with a new script language tag) at the beginning of the HTML document, then potentially scripts originally present in the HTML document would not work properly because they may be parsed according to a different language. Also, certain code is inserted when a <FRAMESET> tag is present in the HTML document and other code is inserted when a <BODY> tag is present in the HTML document. One skilled in the art will recognize that other parameters may be accounted for by the code and that the code could contain statements other than those reflected in the examples below.
- Specifically, in
step 1001, the interceptor code parses the HTML document to determine the first (if any) script language specified and whether there are any <FRAMESET> tags present. Instep 1002, the interceptor code determines whether the first script language tag indicates that Javascript is the default script language and, if so, continues instep 1004, else continues instep 1003. Instep 1003, if the default script language is VBscript, then the interceptor continues instep 1010 to insert a script in the VBscript language, else continues instep 1004 to insert a script written in the Javascript language. One skilled in the art will recognize that any scripting language can be detected and code accordingly provided as long as the interceptor code is written to inject the appropriate code into the HTML document. Instep 1004, the interceptor determines whether the browser supports Active-X components, such as the MICROSOFT INTERNET EXPLORER, and, if so, continues instep 1005, else continues instep 1006. Instep 1005, the interceptor injects code written in Javascript which conditionally inserts an HTML tag that specifies an Active-X component, after the first <BODY> tag found in the HTML document, and continues instep 1008. - Table 1 provides example code for the code injected at
step 1005.TABLE 1 <SCRIPT LANGUAGE=“JavaScript”> <!-- if (top.frames.length<2) { document.write(“<OBJECT ID=\“CaptureX1\”WIDTH=\“100%\” HEIGHT=23”) document.write(“CODEBASE=\“http://www.techwave.com/WebCapture/ CaptureX.cab#Version=1,0,0,2\””) document.writeln(“CLASSID=\”CLSID:DF4ED563-7875- 1140-8DA7-00400522111D\“>”) document.write(“<PARAM NAME=\“DocumentURL\”VALUE=\“http:// server/path\”></OBJECT>”) } //--> </SCRIPT> - This code in essence tests to see whether there is only one frame present and, if so, generates an <OBJECT> tag. This code is discussed in further detail in FIG. 14, which describes how a browser interprets this injected code.
- Alternatively, in
step 1006 the interceptor code determines whether the browser supports embedded plug-in modules and, if so, continues instep 1007, else returns. Instep 1007, the interceptor code injects code written in Javascript, which conditionally inserts an HTML tag that specifies an embedded plug-in, after the first <BODY> tag found in the HTML document, and continues instep 1008. - Table 2 provides example code for the code injected into the HTML document in
step 1007.TABLE 2 <SCRIPT LANGUAGE=“JavaScript”> <!-- if (top.frames.length<2) { document.write(“<EMBED TYPE=\”application/x-webcapture\“”) document.write(“WIDTH=\”100%\“HEIGHT=23”) document.writeln(“PLUGINSPACE=\”http://www.techwave.com/ WebCapture\“>”) document.write(“<PARAM NAME=\“DocumentURL\” VALUE=\“http://server/path\”></EMBED>”) } //--> </SCRIPT> - This code in essence tests to see whether there is only one frame present and, if so, generates an <EMBED> tag. This code is discussed in further detail with respect to FIG. 13, which describes how a browser interprets this code.
- Table 3 provides an overall example of what an HTML document that includes a <BODY> tag definition looks like after code written in Javascript is injected when the default language specified is Javascript and the target browser supports Active-X components. In Table 3, the injected code beginning with the <SCRIPT LANGUAGE . . . > tag and ending with the </SCRIPT> tag is inserted after the first <BODY> tag statement located in the HTML document.
TABLE 3 <html> <BODY> <SCRIPT LANGUAGE=“JavaScript”> <!-- if (top.frames.length<2) { document.write(“<OBJECT ID=\“CaptureX1\”WIDTH=\“100%\” HEIGHT=23”) document.write(“CODEBASE=\”http://www.techwave.com/Webcapture/ CaptureX.cab#Version=1,0,0,2\“”) document.writeln(“CLASSID=\”CLSID:DF4ED563-7875-1140-8DA7- 00400522111D\“>”) document.write(“<PARAM NAME=\“DocumentURL\” VALUE=\“http://server/path\”></OBJECT>”) } //--> </SCRIPT> <SCRIPT...> ....Script already on page... </SCRIPT> <BODY...> </html> - In
step 1008, the interceptor code determines whether there is a <FRAMESET> tag present in the HTML document and, if so, continues instep 1009, else returns. Instep 1009, the interceptor code injects code written in Javascript, which conditionally inserts a new <FRAMESET> tag definition around the first located <FRAMESET> tag definition, and then returns. For convenience, a closing </FRAMESET> tag is preferably always injected into the HTML document. This ending tag is typically ignored by a browser if <FRAMESET> tags are not present in the document. Otherwise, the appropriate closing </FRAMESET> tag is inserted in an appropriate location in the HTML document. - Table 4 provides example code for the code injected into the HTML document in
step 1009.TABLE 4 <SCRIPT LANGUAGE=“JavaScript”> <!-- if (top.frames.length<2) { document.write(“FRAMESET rows=25,* FRAMEBORDER=0 FRAMESPACING=0 BORDER=0>”) document.write(“<FRAME MARGINWIDTH=0 MARGINHEIGHT=0 NORESIZE SCROLLING=\“No\” SRC=\“FramePage.htm\“>”) } //--> </SCRIPT> - In essence, the code tests to see whether there is only one frame present and, if so, generates a new frameset that points to the appropriate injectable component tag definition.
- Table 5 provides an overall example of what an HTML document that contains a <FRAMESET> tag definition looks like after code is injected, when the default language specified is Javascript or no language was specified. This table contains the same code as Table 4, except that the injected code is shown in context. The injected code begins with the <SCRIPT LANGUAGE> tag and ends with the </SCRIPT> tag. Each frameset defines one or more frames and specifies a source document to be used to fill the frames. Note that the URL that is specified for the source document of the frame in this case points to the appropriate code, as shown in Table 1 or 2, depending upon whether the browser supports Active-X components or embedded plug-ins.
TABLE 5 <html> <SCRIPT LANGUAGE=“JavaScript”> <!-- if (top.frames.length<2) { document.write “<FRAMESET rows=25,* FRAMEBORDER=0 FRAMESPACING=0 BORDER=0>” document.write “<FRAME MARGINWIDTH=0 MARGINHEIGHT=0 NORESIZE SCROLLING=““No””SRC=““FramePage.htm””>” } //--> </SCRIPT> <FRAMESET...> <FRAME...> ... </FRAME> </FRAMESET> </html> - Returning to step1003, if the interceptor code determines that the default language specified is VBscript, then the routine continues in
step 1010. Steps 1010-1015 operate analogously to steps 1004-1009, except that they insert code written in VBscript instead of Javascript. - Table 6 provides example code for the code injected into the HTML document in
step 1011. This code conditionally inserts an Active-X component HTML statement into the HTML document when the browser parses and interprets the HTML document.TABLE 6 <SCRIPT LANGUAGE=“VBScript”> <!-- if (top.frames.length<2) then document.write “<OBJECT ID=““CaptureX1”” WIDTH=““100%”” HEIGHT=23 ”) document.write “CODEBASE=““http://www.techwave.com/Webcapture/ CaptureX.cab#Version=1,0,0,2”” ” document.writeln “CLASSID=““CLSID:DF4ED563-7875-1140-8DA7- 00400522111D””>”) document.write “<PARAM NAME=““DocumentURL”” VALUE=““http://server/path””></OBJECT>” end if REM --> </SCRIPT> - Table 7 provides example code for the code injected into the HTML document in
step 1013. This code conditionally inserts an embedded plug-in HTML statement into the HTML document when the browser parses and interprets the HTML document.TABLE 7 <SCRIPT LANGUAGE=“VBScript”> <!-- if (top.frames.length<2) then document.write “<EMBED TYPE=““application/x-webcapture”” ” document.write “WIDTH=““100%”” HEIGHT=23” document.writeln “PLUGINSPACE=““http://www.techwave.com/ WebCapture””>” document.write “<PARAM NAME=““DocumentURL”” VALUE=““http://server/path””></EMBED>” end if REM --> </SCRIPT> - Table 8 provides example code for the code injected into the HTML document in
step 1015, when a <FRAMESET> tag is present.TABLE 8 <SCRIPT LANGUAGE=“VBScript”> if (top.frames.length<2) then document.write “<FRAMESET rows=25,* FRAMEBORDER=0 FRAMESPACING=0 BORDER=0>” document.write “<FRAME MARGINWIDTH=0 MARGINHEIGHT=0 NORESIZE SCROLLING=““No”” SRC=““FramePage.htm””>” end if </SCRIPT> - FIG. 11 is an overview flow diagram of the steps performed by a browser to parse and interpret an HTML document. These steps correspond to step604 in FIG. 6. In
step 1101, the browser parses and interprets the HTML document. When it parses and interprets the code injected by the interceptor code, it conditionally writes the appropriate HTML tags into the HTML document. The details of this step are discussed further with reference to FIG. 12. Instep 1102, assuming that additional HTML code is written into the document, the browser interprets this HTML code to build an instance of the injectable component. The details of this step are disclosed further with reference to FIGS. 13 and 14. - FIG. 12 is a flow diagram of the steps performed by a browser to parse and interpret the injected code inserted by the interceptor code module. Although the specific steps illustrated in FIG. 12 correspond to a browser that supports Active-X components when the injected code is written in Javascript, analogous steps are performed for a browser that supports plug-ins or when the injected code is written in VBscript. Exceptions are noted below. In FIG. 12, the browser preferably determines whether an instance of the injectable component is already being displayed and, if so, does nothing. Otherwise, if designated by the injected code, a new <FRAMESET> tag definition is inserted into the HTML document and a new <OBJECT> tag definition is inserted into the HTML document.
- Specifically, in
step 1201, when the browser executes the injected code placed before an existing <FRAMESET> tag (see, e.g., Table 4), then the browser determines whether an instance of the injectable component is already being displayed. If so, the browser ignores the injected code, otherwise continues instep 1202. Instep 1202, assuming the HTML document contains injected code as shown in Table 5, then the “document.write” statements are executed. These statements generate a new <FRAMESET> definition with a frame source URL pointing to HTML code that is used to generate an instance of the injectable component (e.g., the tags shown in either Table 1 or Table 2). Instep 1203, when the browser executes the injected code placed after the <BODY> tag (see, e.g., Table 3) then the browser determines whether an instance of the injectable component is already being displayed. If so, then the browser ignores the injected code, otherwise continues instep 1204. Instep 1204, the browser executes the “document.write” statements shown, for example, in Table 1, to insert a new HTML <OBJECT> tag definition into the HTML document. The <OBJECT> tag definition includes a CLASSID, the source of installation code for the injectable component, and various other parameters. Note that, if the steps of FIG. 12 are instead executed for a browser that supports plug-ins, then the “document.write” statements will instead generate an <EMBED> tag, such as shown in the “document.write” statements of Table 2. Instep 1205, the browser optionally writes out any other needed HTML code to set parameters of the instance of the injectable component, and continues. - FIGS. 13 and 14 discuss the steps performed by a browser to parse and interpret the inserted HTML tags to generate an instance of an injectable component. These tags are inserted into the HTML document as a result of executing the injected code, which was previously inserted by the interceptor code module. These routines correspond to step1102 in FIG. 11 for a browser that supports embedded plug-in modules and for a browser that supports Active-X components, respectively.
- FIG. 13 is a flow diagram of the steps performed by a browser that supports plug-ins when processing HTML tags. In
step 1301, if the browser detects a <FRAMESET> tag definition, then it continues instep 1302, else continues to process other types of HTML tags. Instep 1302, the browser loads the HTML document specified by the source parameter URL of the <FRAMESET> tag and continues. In this case, the source parameter specifies a document that contains an <EMBED> tag, analogous to the <EMBED> tag generated by the “document.write” statements shown in Table 2. Instep 1303, when the browser detects an <EMBED> HTML tag, it continues instep 1304, else continues to process other HTML tag definitions. Instep 1304, the browser prompts the user to load in the code for the injectable component. Instep 1305, if the user indicates a desire to load the embedded object, then the browser continues instep 1306, else continues with other processing. Instep 1306, the browser copies to local storage the code specified by the “PLUGINSPAGE” parameter and executes the code in order to generate the embedded component. Instep 1307, the browser sets any other parameters indicated by the <EMBED> tag definition and continues with other processing. As demonstrated in FIG. 13, the HTML tags conditionally generated by the injected code are processed just as all other HTML codes in the HTML document. Thus, the process of inserting an injectable component into the browser using the injection system of the present invention is transparent to the browser. - FIG. 14 is a flow diagram of the steps performed by a browser that supports Active-X components when processing HTML tags. In
step 1401, if the browser detects a <FRAMESET> tag definition, then it continues instep 1402, else continues to process other types of HTML tags. Instep 1402, the browser loads the HTML document specified by the source parameter URL of the <FRAMESET> tag and continues. In this case, the source parameter specifies a document that contains an <OBJECT> tag, analogous to the <OBJECT> tags generated by the “document.write” statements shown in Table 1. Instep 1403, when the browser detects an <OBJECT> tag definition, the browser continues instep 1404, else continues with the processing of other HTML tag definitions. Instep 1404, the browser uses the CLASSID specified in the <OBJECT> tag definition as a parameter to locate the executable code for the injectable component in the class registry. Instep 1405, the browser determines whether a local copy of the code designated in the registry is available and, if so, continues instep 1407, else continues instep 1406. Instep 1406, when the code is unavailable the browser runs the install injection system using the document specified by the CODEBASE parameter of the <OBJECT> tag to perform the steps discussed with reference to FIG. 7. As described earlier,step 1406 is typically executed when a user receives an HTML document that contains injected code but when the injection system of the present invention has not yet been installed. Details for how downloading is performed using a cabinet file (a file with a “.cab” extension) are provided in D. Chappell, Understanding Active-X and OLE, Microsoft Press, Redmond, 1996, which is incorporated herein by reference. In summary, the cabinet file is automatically deconstructed to yield a file (a “.INF” file) that directs the installation process. Instep 1407, when a local copy of the injectable component code is available, the browser loads and runs the injectable component code. Instep 1408, the routine sets any other parameters for the injectable component that are indicated by the <OBJECT> tag, and continues with other processing. - As described with reference to FIG. 9 in discussing the steps performed by the interceptor code, in one embodiment, the interceptor code is responsible for updating the code that implements the injectable component. This procedure may be important, for example, when a local copy of the injectable component code is stored on the client machine. Recall that the interceptor code preferably determines whether this update is needed each time it receives an HTTP message that contains an HTTP-request (see, e.g.,
step 903 in FIG. 9). - FIG. 15 is a flow diagram of the steps performed by the interceptor code to update the code that implements the injectable component. In summary, a mechanism is provided that enables the server that provides the injectable component contents to provide new injectable component code on a client-by-client basis. The interceptor code determines whether there is new injectable component code available and, if so, prompts the user to determine whether the user desires to install the new component. In a preferred embodiment, the user of the client machine is able to indicate the frequency by which the interceptor code should periodically determine whether a new injectable component is available. In a preferred embodiment, the injectable component itself provides a user interface that enables the user to set the frequency of the periodic update. For example, the
menu 309 shown in FIG. 3 could be used for this procedure. The designated frequency value is preferably stored as a property in global storage, such as within the class registry. - Specifically, in
step 1501, the interceptor code retrieves the update frequency from a property in the registry. Instep 1502, the interceptor code determines, based upon the retrieved update frequency, whether it is time to update and, if so, continues instep 1503, else returns. Instep 1503, the interceptor code sends an HTTP-request for a predetermined document (page) to a predetermined location (the server source machine for the injectable component). Except for the first time that such a request is made, this request includes a machine identifier (machine_ID), which is specific to the client machine. This machine_ID is returned in the first response by the designated server to an update request. In this way, a unique machine identifier is assigned to each client machine. Instep 1504, when a corresponding HTTP-response is received from the server that provides the injectable component, the interceptor code continues instep 1505, else continues with other processing. The HTTP-response received preferably includes the specific machine_ID of the client machine. The server preferably generates the unique machine_ID from a mechanism specific to that server machine, which is responsible for keeping track of each client. Any such mechanism for tracking client machine information and generating unique identifiers is operable. Instep 1505, the interceptor code extracts version information from the HTTP message (and the machine_ID if this is the first such request). Instep 1506, the interceptor code determines whether the indicated version is different from the version of the injectable component code currently installed on the user's machine and, if so, continues instep 1507, else returns. Instep 1507, the interceptor code prompts the user to determine if the user wishes to install a new version of the injectable component code. Instep 1508, if the user indicates that installation of the new version is desired, then the interceptor code continues instep 1509 to re-install the injection system as per FIG. 7, else returns. - Although the present invention has been described in terms of preferred embodiments, it is not intended that the invention be limited to these embodiments. Equivalent methods, structures, processes, steps, and other modifications within the spirit of the invention fall within the scope of the invention. The scope of the present invention is defined by the claims which follow.
Claims (41)
1. A method in a computer system for injecting code into an HTML document to conditionally generate a user interface component when processing the HTML document, the method comprising:
under control of browser code,
installing interceptor code as a proxy server; and
sending a request for the HTML document to the interceptor code installed as the proxy server;
under control of the interceptor code installed as the proxy server,
receiving the request for the HTML document;
forwarding the received request to a specified server;
upon receiving a response that includes the requested HTML document, injecting code into the received HTML document thereby creating a modified HTML document, wherein the stored code, when executed, conditionally generates additional code; and
forwarding to the browser code the received response that includes the modified HTML document; and
under control of the browser code,
upon receiving the response that includes the modified HTML document, executing the code injected in the modified HTML document such that, when a certain condition is met, additional code is inserted into the modified HTML document; and
when processing the modified HTML document, using the inserted additional code to generate the user interface component.
2. The method of claim 1 wherein the processing of the HTML document comprises displaying the HTML document.
3. The method of claim 1 wherein the certain condition depends upon whether the user interface component is already displayed.
4. The method of claim 3 wherein a determination of whether the user interface component is already displayed is performed by determining whether there is only one frame currently being displayed.
5. The method of claim 1 wherein the inserted additional code comprises HTML tags that are used to create an Active-X component.
6. The method of claim 1 wherein the inserted additional code comprises HTML tags that are used to create a plug-in component.
7. The method of claim 1 wherein the injected code is a script.
8. The method of claim 7 wherein the script is written in Javascript.
9. The method of claim 7 wherein the script is written in VBscript.
10. The method of claim 1 wherein the using of the inserted additional code to generate the user interface component further comprises:
instantiating an object specified by the additional code;
determining from a class registry an indicator of code to implement the behavior of the instantiated object; and
loading and executing the code indicated by the determined indicator.
11. The method of claim 1 wherein the user interface component is specified as an HTML frame.
12. A method in a computer system for conditionally incorporating an injectable component as part of an HTML document, the method comprising:
installing interceptor code; and
under control of the installed interceptor code,
receiving a response to a request for the HTML document; and
injecting code into the received response whereby, when the HTML document is processed, the injected code causes conditional generation of the injectable component and incorporation of the generated component as part of the HTML document.
13. The method of claim 12 wherein the processing of the HTML document includes displaying the HTML document.
14. The method of claim 12 wherein the incorporation of the generated component as part of the HTML document comprises displaying the generated component.
15. The method of claim 12 wherein the HTML document is a WEB page.
16. The method of claim 12 wherein the injected code is a script.
17. The method of claim 16 wherein the script is written in the Javascript language.
18. The method of claim 16 wherein the script is written in the VBscript language.
19. The method of claim 12 wherein the interceptor code is installed as a proxy server for a browser.
20. The method of claim 12 wherein the injected code, upon a certain condition, generates HTML tags that are used to generate the injectable component.
21. The method of claim 20 wherein the certain condition is met when the injectable component is not already displayed.
22. The method of claim 12 , further comprising periodically updating code that implements the injectable component.
23. The method of claim 12 , further comprising:
downloading code that implements the injectable component; and
wherein the injected code uses the downloaded code to generate and incorporate the injectable component.
24. The method of claim 23 , further comprising periodically updating the downloaded code.
25. A WEB page capturing system for injecting code to conditionally generate a component on a WEB page comprising:
an injectable user interface component;
an interceptor server that is installed as a proxy server, receives and forwards requests for WEB pages, receives and forwards responses to the requests for WEB pages, and that, upon receiving a response to a request for a WEB page, injects code into the WEB page; and
a browser that forwards requests for WEB pages to the interceptor server installed as the proxy server, receives responses that contain WEB pages from the proxy server, and displays the received WEB pages, such that, when a WEB page is received from the proxy server that contains the injected code, the injectable user interface component is generated and displayed transparent to the browser when a certain condition is met, without modifying the implementation of the browser.
26. The system of claim 25 wherein the injectable user interface component is periodically updated by the interceptor server.
27. The system of claim 25 wherein the injected code is a script.
28. The system of claim 27 wherein the script is written in Javascript.
29. The system of claim 27 wherein the script is written in VBscript.
30. The system of claim 25 wherein the generation and display of the user interface component is performed by inserting HTML tags into the WEB page when the certain condition is met, the HTML tags being used to generate the user interface component.
31. The system of claim 25 wherein the certain condition is met when it is determined that the user interface component is not already displayed on the WEB page.
32. The system of claim 25 wherein the generation and display of the user interface component is performed by inserting a new frameset tag definition into the WEB page when the certain condition is met.
33. A document injection system comprising:
a user interface component that is downloaded to a client machine;
an interceptor code module that is downloaded to the client machine and installed as a proxy server, thereby automatically intercepting HTTP-request and HTTP-response messages between the client machine and a specified server machine, the interceptor code module injecting code into each document that is received in an HTTP-response message; and
a browser code module that sends HTTP-request messages and receives HTTP-response messages through the proxy server and that processes documents received in HTTP-response messages, whereby, when the browser code module executes the injected code as part of processing a received document, additional code is conditionally inserted into the received document that, when executed, is used to automatically generate an instance of the downloaded user interface component.
34. The system of claim 33 wherein the processing of the document involves displaying the document.
35. The system of claim 33 , further comprising displaying the automatically generated user interface component instance when the additional code is executed.
36. The system of claim 33 wherein the downloaded user interface component is periodically updated by the interceptor code module so that an updated user interface component is conditionally generated.
37. The system of claim 33 wherein the document is an HTML document.
38. The system of claim 33 wherein the injected code is written in a script language.
39. The system of claim 33 wherein the additional code is used to generate an Active-X component.
40. The system of claim 33 wherein the additional code is used to generate a plug-in component.
41. The system of claim 33 wherein the additional code comprises HTML tag statements.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/872,474 US20020129064A1 (en) | 1997-04-08 | 2001-06-01 | Method and system for injecting code to conditionally incorporate a user interface component in an HTML document |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/827,691 US6266681B1 (en) | 1997-04-08 | 1997-04-08 | Method and system for inserting code to conditionally incorporate a user interface component in an HTML document |
US09/872,474 US20020129064A1 (en) | 1997-04-08 | 2001-06-01 | Method and system for injecting code to conditionally incorporate a user interface component in an HTML document |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/827,691 Continuation US6266681B1 (en) | 1997-04-08 | 1997-04-08 | Method and system for inserting code to conditionally incorporate a user interface component in an HTML document |
Publications (1)
Publication Number | Publication Date |
---|---|
US20020129064A1 true US20020129064A1 (en) | 2002-09-12 |
Family
ID=25249890
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/827,691 Expired - Lifetime US6266681B1 (en) | 1997-04-08 | 1997-04-08 | Method and system for inserting code to conditionally incorporate a user interface component in an HTML document |
US09/872,474 Abandoned US20020129064A1 (en) | 1997-04-08 | 2001-06-01 | Method and system for injecting code to conditionally incorporate a user interface component in an HTML document |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/827,691 Expired - Lifetime US6266681B1 (en) | 1997-04-08 | 1997-04-08 | Method and system for inserting code to conditionally incorporate a user interface component in an HTML document |
Country Status (3)
Country | Link |
---|---|
US (2) | US6266681B1 (en) |
AU (1) | AU6960598A (en) |
WO (1) | WO1998045793A1 (en) |
Cited By (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020007369A1 (en) * | 1999-12-17 | 2002-01-17 | Thiagarajan Saravanan | Network navigation |
US20030005129A1 (en) * | 2001-05-11 | 2003-01-02 | Sap Ag | Browser with messaging capability and other persistent connections |
US20030177226A1 (en) * | 2002-03-14 | 2003-09-18 | Garg Pankaj K. | Tracking hits for network files using transmitted counter instructions |
US6633850B1 (en) * | 1998-06-05 | 2003-10-14 | Creative Internet Concepts, Llc | Background advertising system |
US20030195967A1 (en) * | 1997-06-19 | 2003-10-16 | Selgas Thomas Drennan | Method of cost reduction/billing |
US20040111672A1 (en) * | 2002-12-09 | 2004-06-10 | Corel Corporation | System and method for extending scalable vector graphics capabilities |
US20040111673A1 (en) * | 2002-12-09 | 2004-06-10 | Corel Corporation | System and method for controlling user interface features of a web application |
US20050022116A1 (en) * | 2002-12-09 | 2005-01-27 | Corel Corporation | System and method for manipulating a document object model |
US20060129982A1 (en) * | 2000-01-11 | 2006-06-15 | Eolas Technologies, Inc. | Method and system for hypermedia browser API simulation to enable use of browser plug-ins and applets as embedded widgets in script-language-based interactive programs |
US20060277286A1 (en) * | 2005-06-02 | 2006-12-07 | Oracle International Corporation | Globalization framework for providing locale-specific services using client-side scripting languages |
US20070124445A1 (en) * | 2005-11-26 | 2007-05-31 | Robert Harris | Browser adaptation for context based navigation |
US20070130546A1 (en) * | 2005-11-26 | 2007-06-07 | Robert Harris | Context based navigation within a browser application |
US20070271352A1 (en) * | 2006-05-22 | 2007-11-22 | Chirag Khopkar | Monitoring landing page experiments |
US20070271392A1 (en) * | 2006-05-22 | 2007-11-22 | Chirag Khopkar | Generating landing page variants |
US20070271511A1 (en) * | 2006-05-22 | 2007-11-22 | Chirag Khopkar | Starting landing page experiments |
US7310627B2 (en) * | 2001-06-15 | 2007-12-18 | International Business Machines Corporation | Method of searching for text in browser frames |
US20080059636A1 (en) * | 2001-06-27 | 2008-03-06 | Freimuth Douglas M | In-kernel content-aware service differentiation |
US20080077852A1 (en) * | 2006-09-22 | 2008-03-27 | Microsoft Corporation | Customizing applications in a discovery interface |
US7360210B1 (en) * | 2002-07-03 | 2008-04-15 | Sprint Spectrum L.P. | Method and system for dynamically varying intermediation functions in a communication path between a content server and a client station |
US20080126938A1 (en) * | 2006-09-22 | 2008-05-29 | Microsoft Corporation | Customizing application page loading in a discovery interface |
US20080126984A1 (en) * | 2006-09-22 | 2008-05-29 | Microsoft Corporation | Customizing a menu in a discovery interface |
US20080178125A1 (en) * | 2007-01-23 | 2008-07-24 | Microsoft Corporation | Providing dynamic content in a user interface in an application |
US20080229323A1 (en) * | 2007-03-12 | 2008-09-18 | Timothy Mackey | Systems and Methods for Error Detection |
US20080228911A1 (en) * | 2007-03-12 | 2008-09-18 | Timothy Mackey | Systems and Methods for Script Injection |
US7512973B1 (en) | 2004-09-08 | 2009-03-31 | Sprint Spectrum L.P. | Wireless-access-provider intermediation to facilliate digital rights management for third party hosted content |
US7568002B1 (en) | 2002-07-03 | 2009-07-28 | Sprint Spectrum L.P. | Method and system for embellishing web content during transmission between a content server and a client station |
US7600011B1 (en) | 2004-11-04 | 2009-10-06 | Sprint Spectrum L.P. | Use of a domain name server to direct web communications to an intermediation platform |
US7650392B1 (en) * | 2004-08-02 | 2010-01-19 | F5 Networks, Inc. | Dynamic content processing in a reverse proxy service |
US20100058191A1 (en) * | 2008-08-28 | 2010-03-04 | Microsoft Corporation | Discovering alternative user experiences for websites |
US7801945B1 (en) | 2002-07-03 | 2010-09-21 | Sprint Spectrum L.P. | Method and system for inserting web content through intermediation between a content server and a client station |
US7809725B1 (en) | 2007-10-18 | 2010-10-05 | Google Inc. | Acquiring web page experiment schema |
US7853782B1 (en) | 2004-04-14 | 2010-12-14 | Sprint Spectrum L.P. | Secure intermediation system and method |
US7895293B1 (en) | 2008-02-25 | 2011-02-22 | Google Inc. | Web page experiments with fragmented section variations |
US7984107B2 (en) | 2005-09-09 | 2011-07-19 | Microsoft Corporation | Proxy assembly for simulating real assembly features on a remote device |
US20110202589A1 (en) * | 2010-02-15 | 2011-08-18 | Openwave Systems Inc. | Scripting/proxy systems, methods and circuit arrangements |
US20110202409A1 (en) * | 2010-02-15 | 2011-08-18 | Openwave Systems Inc. | Using language insertion to provide targeted advertisements |
US8234373B1 (en) | 2003-10-27 | 2012-07-31 | Sprint Spectrum L.P. | Method and system for managing payment for web content based on size of the web content |
US8296643B1 (en) | 2007-10-18 | 2012-10-23 | Google Inc. | Running multiple web page experiments on a test page |
US20130067432A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Application development toolkit |
US8689117B1 (en) | 2009-10-30 | 2014-04-01 | Google Inc. | Webpages with conditional content |
US8732318B2 (en) | 1997-06-19 | 2014-05-20 | Mymail, Ltd. | Method of connecting a user to a network |
US8839350B1 (en) * | 2012-01-25 | 2014-09-16 | Symantec Corporation | Sending out-of-band notifications |
US20140280462A1 (en) * | 2009-02-09 | 2014-09-18 | Apple Inc. | Intelligent download of application programs |
WO2015020853A1 (en) * | 2013-08-09 | 2015-02-12 | Yottaa Inc. | Dynamically modifying a requested web page from a server |
US20150281334A1 (en) * | 2014-03-28 | 2015-10-01 | Fujitsu Limited | Information processing terminal and information processing method |
US9172679B1 (en) | 2004-04-14 | 2015-10-27 | Sprint Spectrum L.P. | Secure intermediation system and method |
US9329851B2 (en) | 2011-09-09 | 2016-05-03 | Microsoft Technology Licensing, Llc | Browser-based discovery and application switching |
US9749440B2 (en) | 2013-12-31 | 2017-08-29 | Sweetlabs, Inc. | Systems and methods for hosted application marketplaces |
US9792265B2 (en) | 2012-08-28 | 2017-10-17 | Sweetlabs, Inc. | Systems and methods for hosted applications |
CN107515742A (en) * | 2017-07-18 | 2017-12-26 | 北京时医康科技发展有限公司 | Web page is set to access the framework method and system of mobile APP local resources |
US9935814B2 (en) | 1997-06-19 | 2018-04-03 | My Mail Ltd. | Method of obtaining a network address |
US9965466B2 (en) | 2014-07-16 | 2018-05-08 | United Parcel Service Of America, Inc. | Language content translation |
US9971747B2 (en) | 2012-08-09 | 2018-05-15 | Sweetlabs, Inc. | Systems and methods for alert management |
US10019247B2 (en) | 2014-05-15 | 2018-07-10 | Sweetlabs, Inc. | Systems and methods for application installation platforms |
US10089098B2 (en) | 2014-05-15 | 2018-10-02 | Sweetlabs, Inc. | Systems and methods for application installation platforms |
CN108762858A (en) * | 2018-04-12 | 2018-11-06 | 珠海市魅族科技有限公司 | A kind of adjusting method and terminal of the interface background of terminal |
US20180329795A1 (en) * | 2015-10-29 | 2018-11-15 | Entit Software Llc | User interaction logic classification |
US10291585B2 (en) * | 2014-01-24 | 2019-05-14 | Mcafee, Llc | Automatic placeholder finder-filler |
US10296968B2 (en) | 2012-12-07 | 2019-05-21 | United Parcel Service Of America, Inc. | Website augmentation including conversion of regional content |
US20190155868A1 (en) * | 2016-05-17 | 2019-05-23 | Nolve Developments S.L. | Server and method for providing secure access to web-based services |
US10366401B1 (en) | 2012-06-29 | 2019-07-30 | Google Llc | Content placement optimization |
US11256491B2 (en) | 2010-06-18 | 2022-02-22 | Sweetlabs, Inc. | System and methods for integration of an application runtime environment into a user computing environment |
US20230401275A1 (en) * | 2022-06-13 | 2023-12-14 | Microsoft Technology Licensing, Llc | Tenant network for rewriting of code included in a web page |
Families Citing this family (155)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6658624B1 (en) * | 1996-09-24 | 2003-12-02 | Ricoh Company, Ltd. | Method and system for processing documents controlled by active documents with embedded instructions |
IE980959A1 (en) * | 1998-03-31 | 1999-10-20 | Datapage Ireland Ltd | Document Production |
US20080034113A1 (en) * | 1998-05-04 | 2008-02-07 | Frank Montero | Method of contextually determining missing components of an incomplete uniform resource locator |
US6590588B2 (en) * | 1998-05-29 | 2003-07-08 | Palm, Inc. | Wireless, radio-frequency communications using a handheld computer |
US6343318B1 (en) | 1998-05-29 | 2002-01-29 | Palm, Inc. | Method and apparatus for communicating information over low bandwidth communications networks |
US6442755B1 (en) * | 1998-07-07 | 2002-08-27 | United Video Properties, Inc. | Electronic program guide using markup language |
US6405238B1 (en) * | 1998-07-31 | 2002-06-11 | Hewlett-Packard Co. | Quick navigation upon demand to main areas of web site |
DE19936314A1 (en) * | 1998-08-05 | 2000-02-17 | Spyglass Inc | Conversion process for document data that is communicated over the Internet uses data base of conversion preferences |
CA2246920A1 (en) * | 1998-09-10 | 2000-03-10 | Ibm Canada Limited - Ibm Canada Limitee | An activemark mechanism for a live parsing editor |
US7328405B1 (en) | 1998-12-09 | 2008-02-05 | Netscape Communications Corporation | Smart browsing providers |
US6857124B1 (en) * | 1999-01-11 | 2005-02-15 | Eolas Technologies, Inc. | Method and system for hypermedia browser API simulation to enable use of browser plug-ins and applets as embedded widgets in script-language-based interactive programs |
US6490602B1 (en) * | 1999-01-15 | 2002-12-03 | Wish-List.Com, Inc. | Method and apparatus for providing enhanced functionality to product webpages |
US6643824B1 (en) * | 1999-01-15 | 2003-11-04 | International Business Machines Corporation | Touch screen region assist for hypertext links |
US7080158B1 (en) * | 1999-02-09 | 2006-07-18 | Nortel Networks Limited | Network caching using resource redirection |
US6477550B1 (en) * | 1999-03-16 | 2002-11-05 | Mcafee.Com Corporation | Method and system for processing events related to a first type of browser from a second type of browser |
US8321411B2 (en) | 1999-03-23 | 2012-11-27 | Microstrategy, Incorporated | System and method for management of an automatic OLAP report broadcast system |
US6476833B1 (en) * | 1999-03-30 | 2002-11-05 | Koninklijke Philips Electronics N.V. | Method and apparatus for controlling browser functionality in the context of an application |
US6665681B1 (en) * | 1999-04-09 | 2003-12-16 | Entrieva, Inc. | System and method for generating a taxonomy from a plurality of documents |
US6701368B1 (en) * | 1999-04-26 | 2004-03-02 | Cisco Technology, Inc. | Providing a stream of data to a browser to update properties on a page |
US6662341B1 (en) * | 1999-05-20 | 2003-12-09 | Microsoft Corporation | Method and apparatus for writing a windows application in HTML |
US7594166B1 (en) * | 1999-05-20 | 2009-09-22 | Microsoft Corporation | Dynamic web page behaviors |
US9208213B2 (en) | 1999-05-28 | 2015-12-08 | Microstrategy, Incorporated | System and method for network user interface OLAP report formatting |
US6401077B1 (en) * | 1999-05-28 | 2002-06-04 | Network Commerce, Inc. | Method and system for providing additional behavior through a web page |
US8607138B2 (en) | 1999-05-28 | 2013-12-10 | Microstrategy, Incorporated | System and method for OLAP report generation with spreadsheet report within the network user interface |
US7146505B1 (en) | 1999-06-01 | 2006-12-05 | America Online, Inc. | Secure data exchange between date processing systems |
US7275086B1 (en) * | 1999-07-01 | 2007-09-25 | Intellisync Corporation | System and method for embedding a context-sensitive web portal in a computer application |
US6976077B1 (en) * | 1999-07-06 | 2005-12-13 | Microsoft Corporation | Automatic and transparent synchronization of server-side state information with a client application |
US6757716B1 (en) * | 1999-07-09 | 2004-06-29 | Microsoft Corporation | Method and system for modifying host application functionality based upon downloaded content |
US6643825B1 (en) * | 1999-07-14 | 2003-11-04 | International Business Machines Corporation | Methods, systems, and computer program products for applying styles to host screens based on host screen content |
US6895557B1 (en) | 1999-07-21 | 2005-05-17 | Ipix Corporation | Web-based media submission tool |
US20010047394A1 (en) * | 1999-09-10 | 2001-11-29 | Kloba David D. | System, method, and computer program product for executing scripts on mobile devices |
US8595308B1 (en) | 1999-09-10 | 2013-11-26 | Ianywhere Solutions, Inc. | System, method, and computer program product for server side processing in a mobile device environment |
US7987420B1 (en) | 1999-09-10 | 2011-07-26 | Ianywhere Solutions, Inc. | System, method, and computer program product for a scalable, configurable, client/server, cross-platform browser for mobile devices |
US8130918B1 (en) | 1999-09-13 | 2012-03-06 | Microstrategy, Incorporated | System and method for the creation and automatic deployment of personalized, dynamic and interactive voice services, with closed loop transaction processing |
US6658093B1 (en) * | 1999-09-13 | 2003-12-02 | Microstrategy, Incorporated | System and method for real-time, personalized, dynamic, interactive voice services for travel availability information |
US6964012B1 (en) | 1999-09-13 | 2005-11-08 | Microstrategy, Incorporated | System and method for the creation and automatic deployment of personalized, dynamic and interactive voice services, including deployment through personalized broadcasts |
AUPQ281099A0 (en) * | 1999-09-14 | 1999-10-07 | E-Club Australia Limited | A method of monitoring internet activity |
CN1173282C (en) * | 1999-09-20 | 2004-10-27 | 国际商业机器公司 | Method and system for dynamically increasiing new functions for www. page |
AU7731300A (en) * | 1999-09-28 | 2001-04-30 | Netraker Corporation | Automated research tool including proxy server |
US6981212B1 (en) * | 1999-09-30 | 2005-12-27 | International Business Machines Corporation | Extensible markup language (XML) server pages having custom document object model (DOM) tags |
US6718516B1 (en) | 1999-09-30 | 2004-04-06 | International Business Machines Corporation | Method for verifying context between multiple related XML tags in document object model (DOM) |
US6732330B1 (en) | 1999-09-30 | 2004-05-04 | International Business Machines Corporation | Scripting language blocks to support multiple scripting languages in a single web page |
US7266766B1 (en) * | 1999-09-30 | 2007-09-04 | International Business Machines Corporation | Method for developing a custom tagbean |
US6981211B1 (en) | 1999-09-30 | 2005-12-27 | International Business Machines Corporation | Method for processing a document object model (DOM) tree using a tagbean |
US7401115B1 (en) | 2000-10-23 | 2008-07-15 | Aol Llc | Processing selected browser requests |
US6594691B1 (en) | 1999-10-28 | 2003-07-15 | Surfnet Media Group, Inc. | Method and system for adding function to a web page |
US6732162B1 (en) | 1999-11-15 | 2004-05-04 | Internet Pictures Corporation | Method of providing preprocessed images for a plurality of internet web sites |
US6675354B1 (en) | 1999-11-18 | 2004-01-06 | International Business Machines Corporation | Case-insensitive custom tag recognition and handling |
US6966029B1 (en) | 1999-12-08 | 2005-11-15 | Koninklijke Philips Electronics N.V. | Script embedded in electronic documents as invisible encoding |
AU2001236568A1 (en) * | 2000-01-28 | 2001-08-07 | Ibeam Broadcasting Corporation | A system and method for rewriting a media resource request and/or response between origin server and client |
US6751736B1 (en) * | 2000-03-14 | 2004-06-15 | International Business Machines Corporation | Method and apparatus for E-commerce by using optional fields for virtual bar codes |
US7801766B2 (en) * | 2000-03-31 | 2010-09-21 | You Technology Brand Services, Inc. | Method, system, and computer readable medium for facilitating a transaction between a customer, a merchant and an associate |
US6697838B1 (en) * | 2000-05-03 | 2004-02-24 | Software Leader, Llc | Method and system for annotating information resources in connection with browsing, in both connected and disconnected states |
US7237125B2 (en) * | 2000-08-28 | 2007-06-26 | Contentguard Holdings, Inc. | Method and apparatus for automatically deploying security components in a content distribution system |
US7478089B2 (en) | 2003-10-29 | 2009-01-13 | Kontera Technologies, Inc. | System and method for real-time web page context analysis for the real-time insertion of textual markup objects and dynamic content |
US7451099B2 (en) * | 2000-08-30 | 2008-11-11 | Kontera Technologies, Inc. | Dynamic document context mark-up technique implemented over a computer network |
US7284008B2 (en) * | 2000-08-30 | 2007-10-16 | Kontera Technologies, Inc. | Dynamic document context mark-up technique implemented over a computer network |
US7865569B1 (en) * | 2000-09-26 | 2011-01-04 | Juniper Networks, Inc. | Method and system for modifying script portions of requests for remote resources |
US7085817B1 (en) * | 2000-09-26 | 2006-08-01 | Juniper Networks, Inc. | Method and system for modifying requests for remote resources |
US7136896B1 (en) * | 2000-09-26 | 2006-11-14 | Juniper Networks, Inc. | Dynamic toolbar for markup language document |
US7287071B2 (en) * | 2000-09-28 | 2007-10-23 | Vignette Corporation | Transaction management system |
FR2814881B1 (en) * | 2000-09-29 | 2003-08-15 | Vivendi Net | OPTIMIZATION METHOD, BY A NETWORK ARCHITECTURE ELEMENT, OF THE CONSULTATION OF DATA |
FR2814828B1 (en) * | 2000-09-29 | 2003-08-15 | Vivendi Net | OPTIMIZATION PROCESS, BY A TERMINAL, OF CONSULTATION OF DATA |
US7383512B1 (en) * | 2000-09-29 | 2008-06-03 | Microsoft Corporation | Method for synchronously binding an external behavior to a web page element |
US7620719B2 (en) * | 2002-06-06 | 2009-11-17 | Juniper Networks, Inc. | Method and system for providing secure access to private networks |
US7206854B2 (en) * | 2000-12-11 | 2007-04-17 | General Instrument Corporation | Seamless arbitrary data insertion for streaming media |
EP1357457B1 (en) * | 2001-01-17 | 2019-08-21 | ContentGuard Holdings, Inc. | Device and method for managing use of content |
JP4644940B2 (en) * | 2001-01-17 | 2011-03-09 | ソニー株式会社 | Billing method, script conversion system and method |
JP4291570B2 (en) * | 2001-01-17 | 2009-07-08 | コンテントガード ホールディングズ インコーポレイテッド | System and method for digital rights management using a standard rendering engine |
GB2372118A (en) * | 2001-02-09 | 2002-08-14 | Amino Holdings Ltd | System commands carried in tags in markup language documents |
WO2002067545A2 (en) * | 2001-02-17 | 2002-08-29 | Inktomi Corporation | Content based billing |
US20020138555A1 (en) * | 2001-03-23 | 2002-09-26 | Yu Allen Kai-Lang | Client enhanced server-side cache system |
US20020156815A1 (en) * | 2001-04-19 | 2002-10-24 | International Business Machines Corporation | Method and apparatus for the separation of web layout, logic, and data when used in server-side scripting languages |
US20020184363A1 (en) * | 2001-04-20 | 2002-12-05 | Steven Viavant | Techniques for server-controlled measurement of client-side performance |
US7640434B2 (en) * | 2001-05-31 | 2009-12-29 | Trend Micro, Inc. | Identification of undesirable content in responses sent in reply to a user request for content |
US20040054968A1 (en) * | 2001-07-03 | 2004-03-18 | Daniel Savage | Web page with system for displaying miniature visual representations of search engine results |
EP1282281A1 (en) * | 2001-08-02 | 2003-02-05 | Alcatel | Network-unit, processor system, method and signal |
US7533386B2 (en) * | 2001-09-28 | 2009-05-12 | Siebel Systems, Inc. | Computing system and method to perform run-time extension for world wide web application |
US7853933B2 (en) | 2001-09-29 | 2010-12-14 | Siebel Systems, Inc. | Computing system and method to perform compile-time extension for world wide web application |
GB0130034D0 (en) * | 2001-12-15 | 2002-02-06 | Ibm | Method and system for assisting a data processing system user in browsing a file system |
US7318238B2 (en) * | 2002-01-14 | 2008-01-08 | Microsoft Corporation | Security settings for markup language elements |
US8151003B2 (en) * | 2002-02-05 | 2012-04-03 | International Business Machines Corporation | System and method for routing data by a server |
JP2003242280A (en) * | 2002-02-15 | 2003-08-29 | Sony Corp | Contents providing system, its method, contents processor and program |
EP1355475B1 (en) * | 2002-04-18 | 2005-12-21 | Siemens Aktiengesellschaft | Enhancing of web pages with new functionality for web-based services |
EP1355238A1 (en) * | 2002-04-19 | 2003-10-22 | Sap Ag | Method and computer system for delta-handling in server-pages |
BR0309402A (en) * | 2002-04-19 | 2005-02-01 | Computer Ass Think Inc | Method for processing numeric data, method for operating numeric format, system for numeric format operation, computer readable means for performing numeric format operation, and system for processing numeric data in a computer document |
US7703015B2 (en) * | 2002-04-30 | 2010-04-20 | Sap Aktiengesellschaft | Delta-handling in server-pages |
US7171614B2 (en) * | 2002-05-30 | 2007-01-30 | Microsoft Corporation | Displaying plug-in derived content in an application's browser-embedded window with callbacks |
US7434163B2 (en) | 2002-05-31 | 2008-10-07 | Sap Aktiengesellschaft | Document structures for delta handling in server pages |
US20030229846A1 (en) * | 2002-06-07 | 2003-12-11 | Anil Sethi | System and method for capturing digital data directly from an electronic device and processing the data into XML form on a computer chip |
US7437720B2 (en) * | 2002-06-27 | 2008-10-14 | Siebel Systems, Inc. | Efficient high-interactivity user interface for client-server applications |
US8645862B2 (en) * | 2002-06-28 | 2014-02-04 | International Business Machines Corporation | Displaying and executing web services in multiple content domains |
US6978224B2 (en) * | 2002-09-17 | 2005-12-20 | Hydrogenics Corporation | Alarm recovery system and method for fuel cell testing systems |
US6889147B2 (en) | 2002-09-17 | 2005-05-03 | Hydrogenics Corporation | System, computer program product and method for controlling a fuel cell testing device |
US8244875B2 (en) * | 2002-12-13 | 2012-08-14 | ANXeBusiness Corporation | Secure network computing |
US8332464B2 (en) * | 2002-12-13 | 2012-12-11 | Anxebusiness Corp. | System and method for remote network access |
US7213037B2 (en) * | 2003-01-13 | 2007-05-01 | I2 Technologies Us, Inc. | Master data management system for centrally managing cached data representing core enterprise reference data maintained as locked in true state read only access until completion of manipulation process |
US7900254B1 (en) * | 2003-01-24 | 2011-03-01 | Mcafee, Inc. | Identifying malware infected reply messages |
US20050086587A1 (en) * | 2003-05-14 | 2005-04-21 | Balz Christopher M. | System and method for presenting computerized interactive forms to respondents using a client-server-systems technology based on web standards |
US20040229954A1 (en) * | 2003-05-16 | 2004-11-18 | Macdougall Diane Elaine | Selective manipulation of triglyceride, HDL and LDL parameters with 6-(5-carboxy-5-methyl-hexyloxy)-2,2-dimethylhexanoic acid monocalcium salt |
US7640586B1 (en) * | 2003-07-07 | 2009-12-29 | Mcafee, Inc. | Reducing HTTP malware scanner latency using HTTP range queries for random access |
WO2005008480A2 (en) * | 2003-07-10 | 2005-01-27 | Computer Associates Think, Inc. | System and method for generating a web-enabled graphical user interface plug-in |
WO2005008477A2 (en) * | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | System and method for dynamic generation of a graphical user interface |
WO2005008469A2 (en) * | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | System and method for generating a graphical user interface (gui) element |
AU2004302143B2 (en) * | 2003-08-07 | 2007-06-14 | Samsung Electronics Co., Ltd. | Audio/video device, apparatus and method for controlling audio/video device |
US7793227B2 (en) | 2003-08-12 | 2010-09-07 | Yahoo! Inc. | Method and system of providing customizable buttons |
WO2005028713A1 (en) * | 2003-09-22 | 2005-03-31 | Hydrogenics Corporation | Electrolyzer cell stack system |
US20050204016A1 (en) * | 2004-03-03 | 2005-09-15 | Bottomline Technologies (De) Inc. | Thin client system and method for dynamically retrieving data and data processing systems related to data content within a portable document file |
US7849412B2 (en) * | 2004-05-21 | 2010-12-07 | Computer Associates Think, Inc. | System and method for generating a web control in a Windows development environment |
US7840888B2 (en) * | 2004-09-16 | 2010-11-23 | Jimmy Jong-Yuan Lin | Architecture and methodology of redirection for dynamic new URL links |
US8078740B2 (en) | 2005-06-03 | 2011-12-13 | Microsoft Corporation | Running internet applications with low rights |
WO2007007017A1 (en) | 2005-07-08 | 2007-01-18 | Corizon Limited | Method and apparatus for user interface modification |
US8239939B2 (en) * | 2005-07-15 | 2012-08-07 | Microsoft Corporation | Browser protection module |
US8225392B2 (en) * | 2005-07-15 | 2012-07-17 | Microsoft Corporation | Immunizing HTML browsers and extensions from known vulnerabilities |
US20070078963A1 (en) * | 2005-10-05 | 2007-04-05 | Woodard Scott E | Method of remote management of the look and functionality of a website by a third party service provider with the aid of scripting technology |
US7823163B2 (en) | 2005-12-30 | 2010-10-26 | Edda Technology, Inc. | Methods and system for process sharing among independent systems/applications via data encapsulation in medical imaging |
US20100138451A1 (en) * | 2006-04-03 | 2010-06-03 | Assaf Henkin | Techniques for facilitating on-line contextual analysis and advertising |
EP2054789A4 (en) * | 2006-04-03 | 2013-01-16 | Kontera Technologies Inc | Contextual advertising techniques implemented at mobile devices |
US8185737B2 (en) | 2006-06-23 | 2012-05-22 | Microsoft Corporation | Communication across domains |
US7998254B2 (en) * | 2006-09-22 | 2011-08-16 | Porous Media Corporation | Membrane module |
US8584147B2 (en) * | 2006-12-21 | 2013-11-12 | Microsoft Corporation | Managed execution environment for software application interfacing |
US8095910B2 (en) * | 2007-04-10 | 2012-01-10 | Microsoft Corporation | Interruptible client-side scripts |
US20080295070A1 (en) * | 2007-05-23 | 2008-11-27 | Microsoft Corporation | Native access to foreign code environment |
US10019570B2 (en) * | 2007-06-14 | 2018-07-10 | Microsoft Technology Licensing, Llc | Protection and communication abstractions for web browsers |
US8996682B2 (en) * | 2007-10-12 | 2015-03-31 | Microsoft Technology Licensing, Llc | Automatically instrumenting a set of web documents |
US20090164949A1 (en) * | 2007-12-20 | 2009-06-25 | Kontera Technologies, Inc. | Hybrid Contextual Advertising Technique |
US9454410B2 (en) | 2008-03-04 | 2016-09-27 | Microsoft Technology Licensing, Llc | Transparent integration of application components |
US20090249248A1 (en) * | 2008-03-25 | 2009-10-01 | International Business Machines Corporation | User directed refinement of search results while preserving the scope of the initial search |
US7912927B2 (en) * | 2008-03-26 | 2011-03-22 | Microsoft Corporation | Wait for ready state |
US8196118B2 (en) * | 2008-03-27 | 2012-06-05 | Microsoft Corporation | Event set recording |
KR101383573B1 (en) * | 2008-08-01 | 2014-04-09 | 삼성전자주식회사 | Electronic apparatus and web-information providing method thereof |
US9582292B2 (en) * | 2008-10-07 | 2017-02-28 | Microsoft Technology Licensing, Llc. | Merged tree-view UI objects |
CA2739595A1 (en) * | 2008-10-19 | 2010-04-22 | Research In Motion Limited | Web application framework for enabling optimum rendering performance on a client based upon detected parameters of the client |
CA2722760A1 (en) * | 2008-10-19 | 2010-04-22 | Research In Motion Limited | Web application framework for enabling the creation of applications that provide an interface with clients that is independent of scripting capability |
US20100218261A1 (en) * | 2009-02-26 | 2010-08-26 | Schneider James P | Isolating processes using aspects |
US8738711B2 (en) * | 2009-11-03 | 2014-05-27 | Oto Technologies, Llc | System and method for redirecting client-side storage operations |
US20110145723A1 (en) * | 2009-12-16 | 2011-06-16 | Oto Technologies, Llc | System and method for redirecting client-side storage operations |
US8478847B2 (en) | 2010-02-04 | 2013-07-02 | International Business Machines Corporation | Blocking a selected port prior to installation of an application |
US20110271184A1 (en) * | 2010-04-28 | 2011-11-03 | Microsoft Corporation | Client application and web page integration |
US8930806B2 (en) * | 2011-09-02 | 2015-01-06 | Verizon Patent And Licensing Inc. | Providing toolbars |
WO2013038053A1 (en) * | 2011-09-14 | 2013-03-21 | Nokia Corporation | Method and apparatus for distributed script processing |
US9003313B1 (en) * | 2012-04-30 | 2015-04-07 | Google Inc. | System and method for modifying a user interface |
US20140143688A1 (en) * | 2012-11-19 | 2014-05-22 | Microsoft Corporation | Enhanced navigation for touch-surface device |
CN104965691B (en) * | 2014-04-18 | 2018-11-06 | 腾讯科技(深圳)有限公司 | The method, apparatus and system of the page elements of the configuration webpage page |
EP2953085A1 (en) * | 2014-06-05 | 2015-12-09 | Mobli Technologies 2010 Ltd. | Web document enhancement |
US10223142B2 (en) * | 2015-04-03 | 2019-03-05 | Oracle International Corporation | System and method for supporting javascript activities in a process defined by a process execution language for execution in a SOA middleware environment |
US10268496B2 (en) | 2015-04-03 | 2019-04-23 | Oracle International Corporation | System and method for supporting object notation variables in a process defined by a process execution language for execution in a SOA middleware environment |
US10089084B2 (en) | 2015-04-03 | 2018-10-02 | Oracle International Corporation | System and method for reusing JavaScript code available in a SOA middleware environment from a process defined by a process execution language |
US10223143B2 (en) * | 2015-04-03 | 2019-03-05 | Oracle International Corporation | System and method for supporting javascript as an expression language in a process defined by a process execution language for execution in a SOA middleware environment |
CN107220074B (en) * | 2016-03-21 | 2020-10-20 | 阿里巴巴集团控股有限公司 | Method and device for accessing and upgrading supporting layer software function |
US10735449B2 (en) * | 2017-07-11 | 2020-08-04 | Viaforensics, Llc | Methods and apparatuses for improved mobile app security testing via bridged native and web user interface interaction |
CN108228181A (en) * | 2017-12-29 | 2018-06-29 | 北京奇虎科技有限公司 | The method and device of embedded html page in html page |
US11036835B2 (en) * | 2018-04-30 | 2021-06-15 | Paypal, Inc. | Challenge interceptor |
US11347614B2 (en) | 2020-02-03 | 2022-05-31 | International Business Machines Corporation | Modifying compiled applications to monitor performance |
US11562043B1 (en) * | 2021-10-29 | 2023-01-24 | Shopify Inc. | System and method for rendering webpage code to dynamically disable an element of template code |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5826025A (en) * | 1995-09-08 | 1998-10-20 | Sun Microsystems, Inc. | System for annotation overlay proxy configured to retrieve associated overlays associated with a document request from annotation directory created from list of overlay groups |
US5764902A (en) * | 1995-09-29 | 1998-06-09 | Intel Corporation | Conditional insert or merge in a data conference |
US5572643A (en) * | 1995-10-19 | 1996-11-05 | Judson; David H. | Web browser with dynamic display of information objects during linking |
US5822539A (en) * | 1995-12-08 | 1998-10-13 | Sun Microsystems, Inc. | System for adding requested document cross references to a document by annotation proxy configured to merge and a directory generator and annotation server |
US5761683A (en) * | 1996-02-13 | 1998-06-02 | Microtouch Systems, Inc. | Techniques for changing the behavior of a link in a hypertext document |
US5835712A (en) * | 1996-05-03 | 1998-11-10 | Webmate Technologies, Inc. | Client-server system using embedded hypertext tags for application and database development |
US5802530A (en) * | 1996-07-01 | 1998-09-01 | Sun Microsystems, Inc. | Web document based graphical user interface |
US5845075A (en) * | 1996-07-01 | 1998-12-01 | Sun Microsystems, Inc. | Method and apparatus for dynamically adding functionality to a set of instructions for processing a Web document based on information contained in the Web document |
US5890171A (en) * | 1996-08-06 | 1999-03-30 | Microsoft Corporation | Computer system and computer-implemented method for interpreting hypertext links in a document when including the document within another document |
US5835914A (en) * | 1997-02-18 | 1998-11-10 | Wall Data Incorporated | Method for preserving and reusing software objects associated with web pages |
US5890158A (en) * | 1997-03-31 | 1999-03-30 | International Business Machines Corporation | Method, apparatus, and program storage device for sharing objects with a network server and a database server using a common object model |
-
1997
- 1997-04-08 US US08/827,691 patent/US6266681B1/en not_active Expired - Lifetime
-
1998
- 1998-04-08 AU AU69605/98A patent/AU6960598A/en not_active Abandoned
- 1998-04-08 WO PCT/US1998/007096 patent/WO1998045793A1/en active Application Filing
-
2001
- 2001-06-01 US US09/872,474 patent/US20020129064A1/en not_active Abandoned
Cited By (117)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9935814B2 (en) | 1997-06-19 | 2018-04-03 | My Mail Ltd. | Method of obtaining a network address |
US9137240B2 (en) | 1997-06-19 | 2015-09-15 | Mymail, Ltd. | System and method of accessing a network by way of different service providers |
US8732318B2 (en) | 1997-06-19 | 2014-05-20 | Mymail, Ltd. | Method of connecting a user to a network |
US9021070B2 (en) | 1997-06-19 | 2015-04-28 | Mymail, Ltd. | Dynamically modifying a toolbar |
US8516132B2 (en) | 1997-06-19 | 2013-08-20 | Mymail, Ltd. | Method of accessing a selected network |
US10228838B2 (en) | 1997-06-19 | 2019-03-12 | Mymail, Ltd. | Dynamically modifying a toolbar |
US10135878B2 (en) | 1997-06-19 | 2018-11-20 | Mymail, Ltd. | Method for accessing a digital network by way of one or more Internet service providers |
US20030195967A1 (en) * | 1997-06-19 | 2003-10-16 | Selgas Thomas Drennan | Method of cost reduction/billing |
US9141263B2 (en) | 1997-06-19 | 2015-09-22 | Thomas Drennan Selgas | Method of modifying a toolbar |
US20040078304A1 (en) * | 1998-06-05 | 2004-04-22 | Gabbard Chuck E. | Background advertising system |
US6633850B1 (en) * | 1998-06-05 | 2003-10-14 | Creative Internet Concepts, Llc | Background advertising system |
US20020007369A1 (en) * | 1999-12-17 | 2002-01-17 | Thiagarajan Saravanan | Network navigation |
US20060129982A1 (en) * | 2000-01-11 | 2006-06-15 | Eolas Technologies, Inc. | Method and system for hypermedia browser API simulation to enable use of browser plug-ins and applets as embedded widgets in script-language-based interactive programs |
US7814157B2 (en) * | 2000-01-11 | 2010-10-12 | Eolas Technlogies, Inc. | Hypermedia browser API simulation to enable use of browser plug-ins and applets as embedded widgets in script-language-based interactive programs |
US20110093527A1 (en) * | 2000-01-11 | 2011-04-21 | Eolas Technologies, Inc. | Distributed hypermedia method and system for automatically invoking external applications providing interaction and display of embedded objects via a scripting platform |
US20030005129A1 (en) * | 2001-05-11 | 2003-01-02 | Sap Ag | Browser with messaging capability and other persistent connections |
US7062530B2 (en) * | 2001-05-11 | 2006-06-13 | Sap Ag | Browser with messaging capability and other persistent connections |
US20080005089A1 (en) * | 2001-06-15 | 2008-01-03 | Bates Cary L | Method of searching for text in browser frames |
US7310627B2 (en) * | 2001-06-15 | 2007-12-18 | International Business Machines Corporation | Method of searching for text in browser frames |
US7756849B2 (en) | 2001-06-15 | 2010-07-13 | International Business Machines Corporation | Method of searching for text in browser frames |
US20080059636A1 (en) * | 2001-06-27 | 2008-03-06 | Freimuth Douglas M | In-kernel content-aware service differentiation |
US8024424B2 (en) | 2001-06-27 | 2011-09-20 | International Business Machines Corporation | In-kernal content-aware service differentiation |
US20090307350A1 (en) * | 2001-06-27 | 2009-12-10 | Douglas Morgan Freimuth | In-kernal content-aware service differentiation |
US20030177226A1 (en) * | 2002-03-14 | 2003-09-18 | Garg Pankaj K. | Tracking hits for network files using transmitted counter instructions |
US7222170B2 (en) * | 2002-03-14 | 2007-05-22 | Hewlett-Packard Development Company, L.P. | Tracking hits for network files using transmitted counter instructions |
US7801945B1 (en) | 2002-07-03 | 2010-09-21 | Sprint Spectrum L.P. | Method and system for inserting web content through intermediation between a content server and a client station |
US7360210B1 (en) * | 2002-07-03 | 2008-04-15 | Sprint Spectrum L.P. | Method and system for dynamically varying intermediation functions in a communication path between a content server and a client station |
US7568002B1 (en) | 2002-07-03 | 2009-07-28 | Sprint Spectrum L.P. | Method and system for embellishing web content during transmission between a content server and a client station |
US8032837B2 (en) | 2002-12-09 | 2011-10-04 | Corel Corporation | System and method for controlling user interface features of a web application |
US20040111673A1 (en) * | 2002-12-09 | 2004-06-10 | Corel Corporation | System and method for controlling user interface features of a web application |
US20040111672A1 (en) * | 2002-12-09 | 2004-06-10 | Corel Corporation | System and method for extending scalable vector graphics capabilities |
US20050022116A1 (en) * | 2002-12-09 | 2005-01-27 | Corel Corporation | System and method for manipulating a document object model |
US7669183B2 (en) | 2002-12-09 | 2010-02-23 | Corel Corporation | System and method for manipulating a document object model |
US8234373B1 (en) | 2003-10-27 | 2012-07-31 | Sprint Spectrum L.P. | Method and system for managing payment for web content based on size of the web content |
US9172679B1 (en) | 2004-04-14 | 2015-10-27 | Sprint Spectrum L.P. | Secure intermediation system and method |
US7853782B1 (en) | 2004-04-14 | 2010-12-14 | Sprint Spectrum L.P. | Secure intermediation system and method |
US7650392B1 (en) * | 2004-08-02 | 2010-01-19 | F5 Networks, Inc. | Dynamic content processing in a reverse proxy service |
US7512973B1 (en) | 2004-09-08 | 2009-03-31 | Sprint Spectrum L.P. | Wireless-access-provider intermediation to facilliate digital rights management for third party hosted content |
US7600011B1 (en) | 2004-11-04 | 2009-10-06 | Sprint Spectrum L.P. | Use of a domain name server to direct web communications to an intermediation platform |
US9245032B2 (en) * | 2005-06-02 | 2016-01-26 | Oracle International Corporation | Globalization framework for providing locale-specific services using client-side scripting languages |
US20060277286A1 (en) * | 2005-06-02 | 2006-12-07 | Oracle International Corporation | Globalization framework for providing locale-specific services using client-side scripting languages |
WO2006132676A1 (en) * | 2005-06-02 | 2006-12-14 | Oracle International Corporation | Globalization framework for providing locale-specific services using client-side scripting languages |
US7984107B2 (en) | 2005-09-09 | 2011-07-19 | Microsoft Corporation | Proxy assembly for simulating real assembly features on a remote device |
US20070124445A1 (en) * | 2005-11-26 | 2007-05-31 | Robert Harris | Browser adaptation for context based navigation |
US20070130546A1 (en) * | 2005-11-26 | 2007-06-07 | Robert Harris | Context based navigation within a browser application |
US20070271511A1 (en) * | 2006-05-22 | 2007-11-22 | Chirag Khopkar | Starting landing page experiments |
US7831658B2 (en) | 2006-05-22 | 2010-11-09 | Google Inc. | Generating landing page variants |
US8682712B2 (en) | 2006-05-22 | 2014-03-25 | Google Inc. | Monitoring landing page experiments |
US20070271352A1 (en) * | 2006-05-22 | 2007-11-22 | Chirag Khopkar | Monitoring landing page experiments |
US20070271392A1 (en) * | 2006-05-22 | 2007-11-22 | Chirag Khopkar | Generating landing page variants |
US7844894B2 (en) | 2006-05-22 | 2010-11-30 | Google Inc. | Starting landing page experiments |
US20080077852A1 (en) * | 2006-09-22 | 2008-03-27 | Microsoft Corporation | Customizing applications in a discovery interface |
US8015506B2 (en) | 2006-09-22 | 2011-09-06 | Microsoft Corporation | Customizing a menu in a discovery interface |
US8112714B2 (en) | 2006-09-22 | 2012-02-07 | Microsoft Corporation | Customizing application page loading in a discovery interface |
US20080126938A1 (en) * | 2006-09-22 | 2008-05-29 | Microsoft Corporation | Customizing application page loading in a discovery interface |
US20080126984A1 (en) * | 2006-09-22 | 2008-05-29 | Microsoft Corporation | Customizing a menu in a discovery interface |
US8635521B2 (en) | 2006-09-22 | 2014-01-21 | Microsoft Corporation | Customizing applications in a discovery interface |
US20080178125A1 (en) * | 2007-01-23 | 2008-07-24 | Microsoft Corporation | Providing dynamic content in a user interface in an application |
US8572160B2 (en) * | 2007-03-12 | 2013-10-29 | Citrix Systems, Inc. | Systems and methods for script injection |
US9021140B2 (en) | 2007-03-12 | 2015-04-28 | Citrix Systems, Inc. | Systems and methods for error detection |
US20140040355A1 (en) * | 2007-03-12 | 2014-02-06 | Citrix Systems, Inc. | Systems and methods for script injection |
US20080228911A1 (en) * | 2007-03-12 | 2008-09-18 | Timothy Mackey | Systems and Methods for Script Injection |
US20080229323A1 (en) * | 2007-03-12 | 2008-09-18 | Timothy Mackey | Systems and Methods for Error Detection |
US9231815B2 (en) * | 2007-03-12 | 2016-01-05 | Citrix Systems, Inc. | Systems and methods for script injection |
US8296643B1 (en) | 2007-10-18 | 2012-10-23 | Google Inc. | Running multiple web page experiments on a test page |
US7809725B1 (en) | 2007-10-18 | 2010-10-05 | Google Inc. | Acquiring web page experiment schema |
US8239489B1 (en) | 2008-02-25 | 2012-08-07 | Google Inc. | Web page experiments with fragmented section variations |
US7895293B1 (en) | 2008-02-25 | 2011-02-22 | Google Inc. | Web page experiments with fragmented section variations |
US20100058191A1 (en) * | 2008-08-28 | 2010-03-04 | Microsoft Corporation | Discovering alternative user experiences for websites |
WO2010025059A3 (en) * | 2008-08-28 | 2010-05-20 | Microsoft Corporation | Discovering alternative user experiences for websites |
US8065617B2 (en) | 2008-08-28 | 2011-11-22 | Microsoft Corporation | Discovering alternative user experiences for websites |
US10084874B2 (en) * | 2009-02-09 | 2018-09-25 | Apple Inc. | Intelligent download of application programs |
US10938936B2 (en) | 2009-02-09 | 2021-03-02 | Apple Inc. | Intelligent download of application programs |
US20140280462A1 (en) * | 2009-02-09 | 2014-09-18 | Apple Inc. | Intelligent download of application programs |
US8689117B1 (en) | 2009-10-30 | 2014-04-01 | Google Inc. | Webpages with conditional content |
US20110202589A1 (en) * | 2010-02-15 | 2011-08-18 | Openwave Systems Inc. | Scripting/proxy systems, methods and circuit arrangements |
US8825732B2 (en) | 2010-02-15 | 2014-09-02 | Unwired Planet, Llc | Scripting/proxy systems, methods and circuit arrangements |
US20110202409A1 (en) * | 2010-02-15 | 2011-08-18 | Openwave Systems Inc. | Using language insertion to provide targeted advertisements |
US11256491B2 (en) | 2010-06-18 | 2022-02-22 | Sweetlabs, Inc. | System and methods for integration of an application runtime environment into a user computing environment |
US11829186B2 (en) | 2010-06-18 | 2023-11-28 | Sweetlabs, Inc. | System and methods for integration of an application runtime environment into a user computing environment |
US9329851B2 (en) | 2011-09-09 | 2016-05-03 | Microsoft Technology Licensing, Llc | Browser-based discovery and application switching |
US20130067432A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Application development toolkit |
US8839350B1 (en) * | 2012-01-25 | 2014-09-16 | Symantec Corporation | Sending out-of-band notifications |
US9294511B2 (en) * | 2012-01-25 | 2016-03-22 | Symantec Corporation | Sending out-of-band notifications |
US20150082376A1 (en) * | 2012-01-25 | 2015-03-19 | Symantec Corporation | Sending out-of-band notifications |
US11176563B1 (en) | 2012-06-29 | 2021-11-16 | Google Llc | Content placement optimization |
US10366401B1 (en) | 2012-06-29 | 2019-07-30 | Google Llc | Content placement optimization |
US9971747B2 (en) | 2012-08-09 | 2018-05-15 | Sweetlabs, Inc. | Systems and methods for alert management |
US9792265B2 (en) | 2012-08-28 | 2017-10-17 | Sweetlabs, Inc. | Systems and methods for hosted applications |
US11010538B2 (en) | 2012-08-28 | 2021-05-18 | Sweetlabs, Inc. | Systems and methods for hosted applications |
US11347826B2 (en) | 2012-08-28 | 2022-05-31 | Sweetlabs, Inc. | Systems and methods for hosted applications |
US10430502B2 (en) | 2012-08-28 | 2019-10-01 | Sweetlabs, Inc. | Systems and methods for hosted applications |
US11741183B2 (en) | 2012-08-28 | 2023-08-29 | Sweetlabs, Inc. | Systems and methods for hosted applications |
US10719871B2 (en) | 2012-12-07 | 2020-07-21 | United Parcel Service Of America, Inc. | Systems and methods of website integration |
US10296968B2 (en) | 2012-12-07 | 2019-05-21 | United Parcel Service Of America, Inc. | Website augmentation including conversion of regional content |
US10311504B2 (en) | 2012-12-07 | 2019-06-04 | United Parcel Service Of America, Inc. | Website augmentation including conversion of regional content |
US11593867B2 (en) | 2012-12-07 | 2023-02-28 | United Parcel Service Of America, Inc. | Systems and methods of website integration |
US11367131B2 (en) | 2012-12-07 | 2022-06-21 | United Parcel Service Of America, Inc. | Systems and methods of website integration |
WO2015020853A1 (en) * | 2013-08-09 | 2015-02-12 | Yottaa Inc. | Dynamically modifying a requested web page from a server |
US10984175B2 (en) | 2013-08-09 | 2021-04-20 | Yottaa Inc. | Systems and methods for dynamically modifying a requested web page from a server for presentation at a client |
US10084878B2 (en) | 2013-12-31 | 2018-09-25 | Sweetlabs, Inc. | Systems and methods for hosted application marketplaces |
US9749440B2 (en) | 2013-12-31 | 2017-08-29 | Sweetlabs, Inc. | Systems and methods for hosted application marketplaces |
US11349814B2 (en) | 2014-01-24 | 2022-05-31 | Mcafee, Llc | Automatic placeholder finder-filler |
US10666622B2 (en) | 2014-01-24 | 2020-05-26 | Mcafee, Llc | Automatic placeholder finder-filler |
US10291585B2 (en) * | 2014-01-24 | 2019-05-14 | Mcafee, Llc | Automatic placeholder finder-filler |
US20150281334A1 (en) * | 2014-03-28 | 2015-10-01 | Fujitsu Limited | Information processing terminal and information processing method |
US10019247B2 (en) | 2014-05-15 | 2018-07-10 | Sweetlabs, Inc. | Systems and methods for application installation platforms |
US10089098B2 (en) | 2014-05-15 | 2018-10-02 | Sweetlabs, Inc. | Systems and methods for application installation platforms |
US9965466B2 (en) | 2014-07-16 | 2018-05-08 | United Parcel Service Of America, Inc. | Language content translation |
US11550688B2 (en) * | 2015-10-29 | 2023-01-10 | Micro Focus Llc | User interaction logic classification |
US20180329795A1 (en) * | 2015-10-29 | 2018-11-15 | Entit Software Llc | User interaction logic classification |
US11232167B2 (en) * | 2016-05-17 | 2022-01-25 | Randed Technologies Partners S.L. | Server and method for providing secure access to web-based services |
US11797636B2 (en) | 2016-05-17 | 2023-10-24 | Netskope, Inc. | Intermediary server for providing secure access to web-based services |
US20190155868A1 (en) * | 2016-05-17 | 2019-05-23 | Nolve Developments S.L. | Server and method for providing secure access to web-based services |
CN107515742A (en) * | 2017-07-18 | 2017-12-26 | 北京时医康科技发展有限公司 | Web page is set to access the framework method and system of mobile APP local resources |
CN108762858A (en) * | 2018-04-12 | 2018-11-06 | 珠海市魅族科技有限公司 | A kind of adjusting method and terminal of the interface background of terminal |
US20230401275A1 (en) * | 2022-06-13 | 2023-12-14 | Microsoft Technology Licensing, Llc | Tenant network for rewriting of code included in a web page |
Also Published As
Publication number | Publication date |
---|---|
WO1998045793A1 (en) | 1998-10-15 |
US6266681B1 (en) | 2001-07-24 |
AU6960598A (en) | 1998-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6266681B1 (en) | Method and system for inserting code to conditionally incorporate a user interface component in an HTML document | |
US7246351B2 (en) | System and method for deploying and implementing software applications over a distributed network | |
KR100260682B1 (en) | A process for running applets over non-ip networks | |
US6643657B1 (en) | Computer system | |
US7966626B2 (en) | Optimized delivery of web application code | |
US7155478B2 (en) | Selectively handling data processing requests in a computer communications network | |
US7139814B2 (en) | Dynamic content delivery to static page in non-application capable environment | |
US6073163A (en) | Method and apparatus for enabling web-based execution of an application | |
US20080077851A1 (en) | Method and apparatus for inserting jsr 168 portlet content into a j2ee java server page | |
US6480882B1 (en) | Method for control and communication between computer systems linked through a network | |
US20020095522A1 (en) | System and method for automatic provision of an application | |
US7620682B1 (en) | Communicating data using an HTTP client | |
KR101700458B1 (en) | Discovering alternative user experiences for websites | |
US6952723B1 (en) | Method and system for correcting invalid hyperlink address within a public network | |
JP2000207421A (en) | Method and system for retrieving document by using hyperlink | |
US7877434B2 (en) | Method, system and apparatus for presenting forms and publishing form data | |
CA2437273C (en) | Network conduit for providing access to data services | |
US6766351B1 (en) | Method and apparatus for communicating information between a browser and an application program | |
US20020138621A1 (en) | System and method for displaying remotely stored content on a web page | |
US6981213B2 (en) | Printing a well-defined subset of an HTML page | |
US20090037741A1 (en) | Logging Off A User From A Website | |
JP2004272317A (en) | Program management method and system, and storage medium storing processing program therefor | |
KR100924076B1 (en) | Internet application embodiment method independent of web browser and operating system | |
JP2004519040A (en) | Method and apparatus for enhancing page generation code affecting partial page regeneration | |
JP2001312464A (en) | Explanation information providing system, program recording medium for explanation information acquisition, and program recording medium for providing explanation information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: CRS LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NETWORK COMMERCE INC.;REEL/FRAME:015167/0734 Effective date: 20040121 |