Abstract:
A user selection of an item corresponding to a Web page can be received. The user selection can represents a request to open the Web page within an instantiated one of a set of Web browser applications installed on a computing device. A set of Web page elements unique to the Web page can be identified through an analysis conducted by the computing device. The identified set of Web page elements can be utilized to determine at the computing device one of the installed Web browser applications for the Web page. The determination of the one installed Web browser application can varies from Web page-to-Web page. At the computing device, the determined one of the Web browser applications can be instantiated. The Web page can be opened within the instantiated one of the Web browser applications.

Description:
BACKGROUND 
     The present invention relates to dynamically selecting one of many available web browsers for viewing a web page. 
     The internet is used to access, gather, and collect information and has become an important technology for work, advertisement and many other activities. The internet stores information in the form of web pages. In an example, the web pages are stored in a server machine and the web pages can be browsed by a user of a client machine using web browsing engines or web browsers. Generally, various conventional web browsers are available at the client machine for browsing the web pages available over the internet. These web browsers may, for example, include Internet Explorer® from Microsoft, Firefox® from Mozilla Foundation, Opera® from Opera Software, and the like. “Internet Explorer” is a registered trademark of Microsoft Corporation. “Firefox” is a registered trademark of Mozilla Foundation. “Opera” is a registered trademark of Opera Software ASA Corporation. 
     BRIEF SUMMARY 
     According to one embodiment of the present invention, a method, system, computer program product, or apparatus can receive a user selection of an item corresponding to a Web page. The user selection can represents a request to open the Web page within an instantiated one of a set of Web browser applications installed on a computing device. A set of Web page elements unique to the Web page can be identified through an analysis conducted by the computing device. The identified set of Web page elements can be utilized to determine at the computing device one of the installed Web browser applications for the Web page. The determination of the one installed Web browser application can vary from Web page-to-Web page. At the computing device, the determined one of the Web browser applications can be instantiated. The Web page can be opened within the instantiated one of the Web browser applications. 
     According to one embodiment of the present invention, a method, a computing device, a computer program product, and/or an apparatus can be provided for selecting a web browser. The embodiment can receive a web page responsive to a request thereafter web page elements associated with the web page is identified by analyzing the web page. The embodiment can then initiate a compatible web browser dynamically from the one or more browsers based on the identified web page elements. 
    
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
         FIG. 1  illustrates an exemplary environment where various embodiment of the invention can be practiced; 
         FIG. 2  illustrates an exemplary visual representation of a received web page, in accordance with an embodiment of the invention; 
         FIG. 3  illustrates a flowchart diagram representing a method for selecting a web browser, in accordance with an embodiment of the invention; and 
         FIG. 4A  and  FIG. 4B  illustrates a flowchart diagram representing a method for selecting a web browser, in accordance with another embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION 
     The user can browse a web page using a web browser by, first selecting the web page and then requesting to retrieve the web page from the server machine. Once the web page data is rendered, the web page may be displayed to the user for viewing in the web browser available in the client machine. Generally, the web page is displayed in a default web browser or in a web browser preferred by the user. However, there may be a scenario when the data associated with the web page is not supported by the default web browser or the preferred web browser. Examples of data include tags, plug-in, versions and the like. Hence, the user may get a poor display of the web page or an error message on the web browser. 
     In such a scenario, the user may perform any of the following procedures to view the web page. The user may view the web page in a compatible browser by manually searching the compatible web browser using trial-and-error process. The user may even enhance the functions of the available web browser by installing or updating compatible web elements like plug-in to the preferred or default web browser. Further, the user may even request for different version of the web page that is supported by the default or preferred web browser. Generally, multiple versions of a single web page are maintained on the server in order to be supported by different web browsers. Hence, when the user requests a specific version of the web page, the server machine will provide the specific version for the user&#39;s browser. 
     Moreover, there may be a scenario where only one version of a web page is maintained for a specific browser, for example the web page is available for Internet Explorer only or Firefox only page. In this circumstance, if the user does not have such specific browser installed in the machine then the users may not be able to view the web page. Therefore, in order to view such web page, the user may need to install the specific web browser, and repeat the procedures to load the web page. Hence, manual searching of the compatible web browser or requesting different versions of web pages is inefficient and tedious process. 
     The above problems identified during the course of the disclosure have been resolved by details expressed herein. Specifically, the disclosure causes a specific one of a set of possible web browsers to be selected for opening a Web page (or other Web resource) based on its compatibility with the Web page. This selection can occur automatically, without manual user intervention. The selection can also be different than a default, which states a preference of Web browser assuming capability with a Web page to-be-opened is not an issue. 
     The disclosure is now described within the context of one or more embodiments, although the description is intended to be illustrative of embodiments of the invention as a whole, and is not to be construed as limiting other embodiments of the invention to the embodiments shown. It is appreciated that various modifications may occur to those skilled in the art that, while not specifically shown herein, are nevertheless within the true spirit and scope of the invention. 
     As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of 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, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
     Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage 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, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
     A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
     Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. Computer program code for carrying out operations for aspects 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. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;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&#39;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). 
     Aspects of the present invention are 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, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions 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, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices 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. 
     Reference is now made to  FIG. 1 , an environment  100  is shown to include a client computer  102  and a server computer  104 . Though, only one client computer and one server computer is shown in the environment  100 , the scope of the invention is not limited to only one client computer and one server computer and a person having ordinary skill in the art may use more client computers and more server computers to perform the method described herein. The server computer  104  is a computer that runs computer programs to serve the needs or requests of other programs, for example requests received from the client computer. 
     Examples of client computer  102  include laptop computer, palmtop computer, desktop computer, multimedia devices, smart phones, Personal Digital Assistants (PDA), and the like. Examples of server computer  104  include, but are not limited to database server, file server, web server, and mail server. In an embodiment, the server computer  104  is a web server  104 . Examples of web server are Apache server, Microsoft Internet Information Services (IIS) and the like. In an embodiment, the web server  104  is hosted in the client computer  102 . The web server  104  is a software or hardware that helps to deliver content, for example web pages, to the client computer using a web browser. In the environment  100 , the client computer  102  is shown to include four web browsers, for example a web browser  108 , a web browser  110 , a web browser  112 , and a web browser  114 . Examples of web browser include Internet Explorer® from Microsoft, Firefox® from Mozilla Foundation, Opera® from Opera Software, and the like. The four web browsers are managed by Browser Manager  116 . 
     The client computer  102  is connected with the web server  104  using a network  106 . The network  106  is a wireless network or a wired network. Examples of network  106  include Internet, Intranet and the like. Hence, the client  102  can request for web pages stored in the web server  104  via the network  106  using any of the web browser available in the client computer  102 . Once the web page is rendered through the web server  104 , the web page is analyzed by the client computer  102  and the compatibility of the web page with each of the available web browser is calculated. Once, the client computer identifies the compatibility of the web page with each of the available web browser, the client computer dynamically initiates the most compatible and optimal web browser to view the rendered web page in the client computer  102 . 
     In an embodiment, the browser manager  116  manages the entire web browsers available in the client computer  102  and initiates the most compatible web browser to view the rendered web page. For example, if the browser  110  is the most compatible web browser to view a rendered web page then the web browser  110  is dynamically initiated to view the web page. 
     Referring to  FIG. 2 , an exemplary web page that is received at the client computer  102  is shown. The visual representation  200  is solely for the sake of clarity and for the purposes of this description and a person having ordinary skill in the art may represent the web page in any format. In the visual representation  200 , the location of the file or web page in local computer or in a network is displayed in a section  202  of the client computer  102 . In an embodiment, the web page is received from the local computer, for example the client computer  102 . In another embodiment, the location of the web page on a network is displayed in the section  202 . In an example, the location of the web page is a Uniform Resource Locator (URL) of the web page. 
     The one or more web browsers available in the client computer are then identified. For example, the web browsers  108 ,  110 ,  112 , and  114  are identified in the client computer  102  before displaying the contents of the web page on the default or preferred web browser. Thereafter, the most optimal web browser for viewing the contents of the web page is identified and initiated. In an embodiment, the data of the web page can be viewed in each of the web browser available in the client computer  102 . 
     In the embodiment, each of the available web browsers is represented as separate tabs. In a sample scenario, a section  204  represents a first tab that shows the web page being viewed in the most optimal web browser, for example the web browser  110  (Web browser 2). A section  206  represents a second tab that shows the second web page being displayed in the web browser  108  (Web browser 1). A section  208  represents a third tab that shows the third web page being displayed in the web browser  114  (Web browser 4). Similarly, a section  210  represents a fourth tab that shows the fourth web page being displayed in the most compatible web browser, for example the web browser  112  (Web browser 3). 
     In section  212 , the web page is automatically displayed in the most compatible web browser, for example the web browser  110 . The most compatible web browser is identified based on the web page elements associated with the received web page. 
     Referring to  FIG. 3 , a method  300  is initiated at step  302 . At step  304 , a web page responsive to a request is received. In an embodiment, the request to access the web page is sent from the client computer  102  to the server computer  104 . The server computer  104 , in response to the request, sends the web page to the client computer  102 . At step  306 , web page elements associated with the web page is identified by analyzing the web page at the client computer  102 . The web page elements include, but are not limited to, tags, specifications, versions, and predefined preferences associated with the web page. 
     In an embodiment, the web browsers available in the client computer are analyzed based on the web page elements and thereafter the most compatible web browser is identified. For example, to view the web page  208  in the client computer  102 , the web browser  108 ,  110 ,  112  and  114  are analyzed to identify the most compatible web browser. In an embodiment, the web browser that is most compatible and is best suited to view the web page  208  is identified and initiated. At step  308 , the method  300  dynamically initiates the compatible web browser from the one or more web browsers based on the identified web page elements. At step  310 , the method  300  is terminated. 
     Referring now to  FIG. 4A , the method is initiated at step  402 . At step  404 , a web page responsive to a request is received. In an embodiment, the web page is received at the client computer  102  in response to the request sent to the server computer  104 . At step  406 , the method  400  checks whether the browser manager is activated or not. A step  408  is performed if the browser manager is not activated otherwise a step  410  is performed. At step  408 , a default web browser is initiated if the browser manager is not activated. In an embodiment, the default browser is a web browser that is predefined in the client computer  102  for viewing the received web page. In another embodiment, the default web browser is identified from the information received in the web page. The user of the client computer  102  can also define his/her preferred web browser to view the web page. 
     At step  410 , the received web page is parsed if the browser manager is activated. At step  412 , the method identifies web page elements associated with the web page from the parsed web page. Examples of web page elements include, tags, specifications, versions, and predefined preferences associated with the web page. For example, the web page elements are used to identify one or more plug-ins required in the web browser to view the received web page. In another example, the web page elements identify the specification of the web browser for viewing the web page. Thereafter, a step  428  is performed. 
     At step  414 , one or more web browsers available in the client computer  102  for viewing the web page are identified. For example, the web browser  108 ,  110 ,  112 , and  114  are identified in the client computer  102 . At step  416 , compatibility scores of each of the available web browsers based on the identified web page elements is determined. In an embodiment, the compatibility score is determined by identifying the number of web page elements supported by each of the available web browser. In an embodiment, information regarding web page elements supported by each of the web browser is maintained in a database (not shown) of the client computer  102 . 
     In an embodiment, the compatibility score is identified based on the percentage or amount of web page data that can be displayed on each of the available web browsers. Hence, a web browser that is able to display maximum percentage or maximum amount of web page data is initiated dynamically. For example, if the web browser  204 ,  206 ,  208  and  210  in the client computer  102  are able to display 95 percentage, 100 percentage, 95 percentage and 80 percentage of web page data respectively, then the web browser  206  is identified as the most compatible web browser and is initiated dynamically. In an embodiment, the percentage web page data displayed by each of the available web browsers is calculated in a background process. 
     Referring now to  FIG. 4B , one or more web browsers having a highest compatibility score is selected, at step  418 . The web browser having the maximum compatibility score is determined by comparing compatibility score of each of the available web browsers. At step  420 , the method checks if there is more than one web browser having a maximum compatibility score. A step  422  is performed if there are more than one web browsers available with the maximum compatibility score otherwise a step  424  is performed. 
     At step  422 , a web browser is initiated from the one or more web browsers based on a predefined preference sequence of the one or more web browsers. The preferred sequence can be regarded for selecting a web browser when the method is unable to select a web browser using the compatible scores. In an embodiment, the web browser preference sequence is stored in the client computer by the user. In another embodiment, the preference sequence is identified in run time. 
     At step  424 , the method  400  dynamically initiates a web browser having the highest compatibility score. At step  426 , the method opens the web page in the initiated web browser. Hence, the web page is viewed in the most compatible web browser from the one or more web browsers available in the client computer  102 . At step  428 , the method  400  is terminated. 
     Various embodiments of the present invention described above may provide at least, but are not limited to, the following advantages. The present invention provides a method for dynamically selecting a web browser for viewing each web page. The method selects the most optimal web browser and displays the contents of a received web page in the web browser that gives the best quality. The method eliminates human intervention in identifying the most optimal web browser for viewing a web page. The method also selects a default web browser if a browser manager is not activated by a user. The method also allows the user to view the received web page in all the available web browsers based on their compatible scores or predefined sequences. 
     The flowchart and block diagrams in the  FIGS. 1-4B  illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
     It will be appreciated that any of the elements described hereinabove may be implemented as a computer program product embodied in a computer-readable medium, such as in the form of computer program instructions stored on magnetic or optical storage media or embedded within computer hardware, and may be executed by or otherwise accessible to a computer (not shown). 
     While the methods and apparatus herein may or may not have been described with reference to specific computer hardware or software, it is appreciated that the methods and apparatus described herein may be readily implemented in computer hardware or software using conventional techniques. 
     While the invention has been described with reference to one or more specific embodiments, the description is intended to be illustrative of the invention as a whole and is not to be construed as limiting the invention to the embodiments shown. It is appreciated that various modifications may occur to those skilled in the art that, while not specifically shown herein, are nevertheless within the true spirit and scope of the invention.