Allowing websites to use each other functionality via the browser


This is an experiment to allow the browser to facilitate interactions between sites. When a user lands on a site that offers services, they can “add” those services to the browser. Pages the user later visits will then be notified of these services (by the browser). If a page wishes to use a service, the user confirms the connection and data is passed between the two sites.

This idea could be similar to “web intents”.


How it works:

  • Browser goes to a page.
  • Browser looks for “services” the site owner opens up to the browser (special code on the page).
  • Browser lets the user know services from this page are available.
  • User can toggle on/off the services, registering them with the browser.
  • User goes to a different page.
  • Browser looks for code on the page that specifies it wishes to use services.
  • Browser tells page about the services the user has installed in the browser.
  • Page javascript determines if it can use any of the services.
  • If so, the Page can add content based on the service.
  • If the special content is interacted with, the user is notified. ex: Page wishes to get X information from Y service OR Page wishes to send X information to Y service.
  • User confirms the interaction.
  • Browser passes information to service page behind the scenes.


  • User visits
  • Twitter tells the browser that a service is available to let other sites tweet as the logged in user.
  • User visits a different page.
  • Page sees they can tweet as user.
  • Page shows new content to share via the service (“Share to your followers: I’m reading….”).
  • User clicks the share button.
  • Browser confirms with user that the current page wishes to use the Twitter “tweet” service and shows the data that will be passed.
  • User agrees and browser opens a hidden page to the services site, calls the appropriate functions with the needed parameters.
  • A tweet is posted… no oauth, no apis.

Proof-of-concept Addon:

An addon for Firefox was created to extend the browser with this functionality. The add-on used in the above video can be found here: