This application claims priority of Taiwan Patent Application Serial No. 98105874 entitled “DEVICE, METHOD AND COMPUTER PROGRAM PRODUCT FOR AUTOMATICALLY SELECTING INTERNET BROWSER AND PROVIDING WEB PAGE SERVICE”, filed on Feb. 24, 2009.
The present invention relates to automatically selecting an internet browser and providing a web page service, and more particularly to automatically selecting an internet browser by using a preference tag embedded in the web page.
Internet has become an important technology as a platform for the purpose of work, play, social, advertisement, and many other activities. As the Internet becomes more and more powerful, the technical structure and relationship between service providers also become more and more complicated. For example, AJAX is a newly developed technology to provide various applications over the Internet. AJAX, abbreviated from “Asynchronous JavaScript and XML,” is a web technology for developing interactive web applications which utilizes JavaScript® for sending standardized requests in Extensible Markup Language (“XML”) format to, and receiving responses from, the web server in order to implement asynchronous data exchange. (“JavaScript” is a registered trademark of Sun Microsystems, Inc. in the United States, other countries, or both.) By means of AJAX, the data processing may be partially transferred to the client from the server, which significantly relieves the workload on the server side and accelerates the data processing.
For the diversity of browsers, some developers try to solve this issue by adopting multiple versions for a single web page in order to maintain the performance on different browsers. When the user requests a web page, the server will provide the specific version for the user's browser. However, it raises the development cost and is unaffordable for small and medium sized companies. Contrarily, some developers will only maintain one version of a web page for a specific browser, also known as an “IE Only” or a “Firefox Only” page. In this circumstance, users may get a poor display or an error message such as “the browser you used is not compatible with this page” if the wrong browser is used. Therefore, the user needs to initiate another browser, or even install a new one, and repeat the procedures to load the web page. Although it reduces the development cost, it creates another problem that the browsing experience is annoying and frustrating to the user.
On the other hand, software developers may develop their own browser in order to provide different characteristics and functions, such as the Internet Explorer® from Microsoft, Firefox® from Mozilla Foundation, Safari® from Apple Computer, Opera® from Opera Software, etc. (“Internet Explorer” is a registered trademark of Microsoft Corporation in the United States, other countries, or both. “Firefox” is a registered trademark of Mozilla Foundation in the United States, other countries, or both. “Safari” is a registered trademark of Apple Inc. in the United States, other countries, or both. “Opera” is a registered trademark of Opera Software ASA Corporation in the United States, other countries, or both.) Moreover, developers may provide updates to their browsers frequently in order to enhance their competitiveness or fix bugs in the earlier version. In addition to browser developers, other application providers also try to develop new applications to catch the consumers' eye. For example, Flash® player and Acrobat® reader are respectively a multimedia player and a document viewer commonly used on the Internet. (“Flash” and “Acrobat” are registered trademarks of Adobe Systems Incorporated in the United States, other countries, or both.) Such kind of applications is usually released in the form of a plug-in to enhance the functions of browsers. To update the plug-ins in the browsers becomes a difficult job for the user.
It becomes a difficult job to maintain both the plug-ins and browsers in the most updated versions even for a professional technician, not to mention a general consumer. Most of the time, the only solution is to repeatedly try different browsers and/or plug-ins and get an acceptable result after a lot of trial and error. Even worse, when the user is surfing from one web page to another, he may again repeat the entire trial-and-error process, which may be annoying for the user.
Therefore, it is advantageous to provide for automatically selecting the browser in order to provide a friendly and convenient browsing environment.
In one aspect, the present invention comprises automatically selecting a browser to access a web page by: determining whether the web page has at least one preference tag; selecting a preferred browser from a plurality of browsers according to the at least one preference tag; and (optionally) initiating the preferred browser.
In another aspect, the present invention comprises providing a web page service. This preferably comprises: determining at least one preference setting for a web page; receiving a request for the web page; embedding the at least one preference setting in the web page as a preference tag; and returning the web page. The web page may be dynamically generated upon receiving the request, and the preference setting may correspond to the generated web page.
Embodiments of these and other aspects of the present invention may be provided as methods, systems (apparatus), and/or computer program products. Furthermore, the described features, advantages, and characteristics of the invention may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize that the invention may be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments of the invention.
In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
As will be appreciated by one skilled in the art, the present invention may be embodied as a system, method, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.), or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module,” or “system.” Furthermore, the present invention may take the form of a computer program product embodied in any tangible medium having computer-usable program code embodied in the medium.
Any combination of one or more computer usable or computer readable media may be utilized. The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, or a magnetic storage device. In the context of this document, a computer-usable or computer-readable medium may be any tangible medium that can contain or store, the program for use by or in connection with the instruction execution system, apparatus, or device.
Computer program code for carrying out operations of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java®, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. (“Java” is a registered trademark of Sun Microsystems, Inc. in the United States, other countries, or both.) The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer, or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
The present invention is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
Referring now to
The client 110, web server 130, and application server 140 may be embodied as a computer according to one embodiment of the present invention. For example,
In the depicted example, local area network (LAN) adapter 115, small computer system interface (SCSI) host bus adapter 116, and expansion bus interface 117 are connected to PCI local bus 114 by direct component connection. In contrast, audio adapter 118, graphics adapter 119, and audio/video adapter 120 are connected to PCI local bus 114 by add-in boards inserted into expansion slots. Expansion bus interface 117 provides a connection for a keyboard and mouse adapter 121, modem 122, and additional memory 123. SCSI host bus adapter 116 provides a connection for hard disk drive 124, tape drive 125, and CD-ROM drive 130. Typical PCI local bus implementations will support three or four PCI expansion slots or add-in connectors.
Those of ordinary skill in the art will appreciate that the hardware in
In this embodiment, the web server 130 may determine whether the web page requested by a user through the client 110 is a static page or a dynamically-linked page. Those skilled in the art may understand this embodiment by taking some hypothetical scenarios as examples. In the first hypothetical scenario, when the web server 130 determines that the requested web page is static and stored therein, it returns the requested web page to client 110 as a response. Once the client 110 receives the web page returned by the server 130, the control module 127 may interpret a preference tag, if any, embedded in the web page in order to determine whether there is any browser in client 110 suitable for handling the web page. In this scenario, if the control module 127 determines that browser 128 is the most suitable browser to handle the web page, it then initiates the browser 128 to handle and present the web page to the user who requested the web page. The user may therefore obtain the best browsing experience without manually making any judgment or selection. In the second hypothetical scenario, the user clicks another link in the web page handled by browser 128 and a new request is sent by control module 127 to web server 130. When the web server 130 determines that the second web page requested by the user is dynamically-linked and located on application server 140, it may send a request to the application server 140. The application server 140 dynamically generates the content of the web page by a service module 142 (illustrated in
Also, client 110 may directly send a request to application server 140 or other different processing sequences without affecting the performance of the present invention.
It should be noted that many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, or the like. Modules may also be implemented in software for execution by various types of processors. An identified module of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
Indeed, a module of executable code may be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and/or across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices.
Referring now to
<meta name=“Browser-Preference” content=“IE; version=7.0”>
In this example, the META tag under the standard HyperText Markup Language (“HTML”) is used to implement the preference tag according to one embodiment of the present invention. When control module 127 finds that the value of the name attribute of the META tag is “Browser-Preference”, it may interpret this preference tag as an identification of a preferred browser. Also, control module 127 may conclude that the preferred browser is Internet Explorer with version 7.0 (“IE 7.0”) for the received web page. It should be noted that a web page may include more than one preferred browser. If the preference tag reveals several preferred browsers, the control module 127 may arbitrarily initiate any one of the preferred browsers. Alternatively, the preference tag may contain additional information to assign priority between the multiple preferred browsers. In Block 408, the control module 127 may further verify whether the preferred browser identified in the preference tag, such as the IE 7.0 browser in the above example, has already been registered, installed, and/or is otherwise available in the operating system. If yes, the control module 127 may initiate the preferred browser, such as IE 7.0 in this example, for handling and presenting the web page to the user in Block 412. If none of the browsers installed, registered, or otherwise available in the operating system conform to the preferred browser identified in the preference tag, the process proceeds to Block 410 to determine whether there is any other preference setting or preference tag available. If yes, the process returns to Block 406 and repeats the determination of the preferred browser. (Alternatively, another process illustrated in
When the control module 127 finds that the value of the name attribute of the META tag is “Browser-Capability”, it may determine that this preference tag contains preference settings identifying the requirement(s) for handling the web page. In this example, capabilities of JavaScript version 2.0, Flash Player version 8.0, and Adobe Reader version 7.0 are required to properly display the web page. These preference settings are very helpful for control module 127 to determine the most suitable browser without manual input from the user. If the browser fulfills all requirements set in the preference tag, the control module 127 may initiate such browser in Block 510. Otherwise, the control module 127 may remove such browser from the candidate list in Block 508 and repeat Blocks 504 to 506. If none of the browsers fulfills all requirements set in the preference tag, the control module 127 may initiate the browser fulfilling the most requirements as compared to other browsers, or alternatively it may initiate the default browser registered in the operating system.
It should be noted that the processing of the blocks illustrated in the drawings need not be performed in the specific sequence illustrated and some processing may be omitted in other embodiments. For example, the control module 127 may reload the information from the database 501 periodically or upon instruction by the user.
In this example, all files contained in the directory “homepage” have a preferred browser “Firefox 3.0.” Similarly, all files contained in the directories “user” and “administrator” respectively have preferred browsers “Opera 9.0” and “IE 7.0.” Notably, there may be more or less information contained in the configuration file for facilitating the determination of a suitable browser.
In this embodiment, web server 130 receives a web page request from the client 110 in Block 604 and determines whether the requested web page is static or dynamically-linked, i.e., whether an application server 140 is involved in the process (Block 606). For better understanding, some hypothetical scenarios are provided for illustrative purposes. In this example, suppose the user requests a file located in the directory “homepage” and the requested web page is a static file. The service module may determine whether there is any preference setting available in Block 608. Therefore, the service module in the web server 130 may determine that the preference setting is “Firefox 3.0” in this example. In a second scenario, suppose the user requests a web page located in directory “administrator” and the requested web page is dynamically linked. The service module then sends a request to application server 140 in Block 610 and receives the response from the application server 140 in Block 612. The service module may determine that the preference setting is “IE 7.0” unless additional recommendation information is found (Block 608) in the response from the application server 140. In Block 614, the service module embeds the preference setting within the web page as a preference tag and thereafter returns the web page to the client 110 in Block 616. It should be noted that Block 614 may be omitted for some cases if a particular web page does not have any corresponding preference setting. In such cases, the web page without any preference tag embedded therein will be returned to the client 110 and the client 110 may also select the proper browser by itself.
In Block 704, the application server 140 receives a request from web server 130 or the client 110. In Block 706, the application server 140 dynamically generates a web page by the service module 142 responsive to the request. In Block 708, a determination is made whether there is any preference setting corresponding to the generated web page. If yes, the preference setting is embedded into the generated web page in Block 710 and the web page is returned to the web server 130 or the client 110 at Block 712. Otherwise, when there is no preference setting corresponding to the generated web page, Block 710 may be omitted and Block 712 then returns the original web page.
It should be noted that the above descriptions are recited for illustrative purpose rather than as limitations. The present invention may still have various amendments and/or changes. For example, the preference settings may be embedded in the HTML file prior to receiving the web page request from the client 110, as shown in
In addition to the embodiments illustrated in
The above-provided description of preferred embodiments of the present invention is illustrative, and is not intended to limit the scope of the invention. Therefore, it is intended that the appended claims shall be construed to include all such variations and modifications as fall within the spirit and scope of the invention.
Number | Date | Country | Kind |
---|---|---|---|
98105874 | Feb 2009 | TW | national |