Tuesday, May 21, 2013

Chrome : This page wants to install a service handler


When accessing Google Mail or Google Calendar from Chrome, a protocol handler icon Protocol Handler may appear in the in address bar (omnibox in Google parlance) to indicate to a custom service handler for handling the opening of certain links that can open programs, such as mailto: links. These links are described by URI scheme and most commons ones are (:mailto and webcal:).
The tooltip for the protocol handler icon is: This page wants to install a service handler.

If you Use Gmail option, it will allow mailto: links in page while in Chrome to be opened in GMail. Similarly, you can enable  webcal: links to be opened in Google Calendar, visit the Google Calendar page to enable.
There is no penalty for performance using this handler service.

To disable site handler requests

Type this in address bar to get to current handlers in Chrome.

 Chrome://settings/handlers 

Or to disable or re-enable these messages in Chrome, follow the steps below.
  1. Click the Chrome menu Chrome menu on the browser toolbar.
  2. Select Settings > Show advanced settings.
  3. In the "Privacy" section, click Content settings.
  4. In the dialog that appears, find the “Handlers” section:
    • To allow requests, select “Allow sites to ask to become default handlers for protocols.”
    • To disable requests, select “Do not allow any site to handle protocols.”

You can create your own service handlers !

For Chrome (13+), Firefox (3.0+) and Opera (11.60+) it is possible to register web application as service handler for custom URI scheme using JavaScript API:
window.navigator.registerProtocolHandler(protocol, uri, title);
  • protocol is the protocol the site wishes to handle, specified as a string.
  • uri is the URI to the handler as a string. You can include "%s" to indicate where to insert the escaped URI of the document to be handled.
  • title is the title of the handler presented to the user as a string.
Specifically for Chrome there is a limitation that does not allow to use custom schemes that don't start with web+ prefix (except standard ones: mailtommsnntprtsp and webcal). So if you want to register your web app as service handler as GMail do, you should write something like this:
navigator.registerProtocolHandler("mailto", "https://www.example.com/?uri=%s", "Example Mail");
OR 
navigator.registerProtocolHandler("web+myscheme", "https://www.example.com/?uri=%s", "My Cool App");

Pay attention at URI pattern, it have to contain %s which will be replaced with actual URI of the link user clicks. For example:
 href="web+myscheme:some+data">Open in "My Cool App"
will trigger GET request to http://www.example.com/?uri=web%2Bmyscheme%3Asome%20data


No comments:

Post a Comment