Chrome Webstore inline installation with AngularJS


I'm a newbie with AngularJS and trying to install a Chrome extension following the Webstore inline installation guide

In my .html file

<button data-ng-click="chromeExtensionInstall()" id="install-button">Add to Chrome</button>

In my .js file

function successCallback () {

function failureCallback () {

$scope.chromeExtensionInstall = function() {
    if (! {
            successCallback(), failureCallback());

Both alerts are displayed and then getting this Uncaught Exception: "Chrome Web Store installations can only be initiated by a user gesture"

Any idea?

Problem courtesy of: amanhuipg


chrome.webstore.install function accept 2 callback parameters, which means 2 pointers to function. You should not call those functions yourself, but just pass in their names, like this:

        successCallback, failureCallback);

Instead of this:

        successCallback(), failureCallback());

Do you see the difference ? If you don't, have a look on this page which explains it well (and there's also this on 7 common JavaScript mistakes)

Solution courtesy of: pomeh


Inline installation is composed of two parts:

  1. A declarative tag (like <link rel="chrome-webstore-item" href="">) and

  2. A call to the JavaScript function chrome.webstore.install(). In addition, you must also verify an association between the site that triggers inline installation and the relevant item(s) in the Chrome Web Store.

I think you are doing only the 2nd part. This link is helpful.

Discussion courtesy of: Asim K T

This recipe can be found in it's original form on Stack Over Flow.