the chrome.webstore.install(link, success, fail)
functionを使用してGoogle Chrome拡張機能をインラインロードしようとしています。chrome.webstore.installは両方のコールバックを呼び出しますか?どうして?
ここに私のページの<head>
スタンザ内のリンクがあります。
<link rel="chrome-webstore-item"
href="https://chrome.google.com/webstore/detail/oafp--redacted--ffencd" />
ここにボタンがあります。ここで
<input type="button" class="btn btn-default" onclick="getExtension();">Go</input>
は、右閉じ</body>
タグの前に表示されますJavascriptを、です。
<script type="text/javascript">
function getExtension() {
function extensionFailed(reason) {
console.log("extension Install Failed:", reason);
}
function extensionInstalled() {
console.log("installed");
};
console.log("calling install");
chrome.webstore.install(undefined, extensionInstalled(), extensionFailed());
console.log("install returned");
};
</script>
getExtensionを呼び出すボタンをクリックすると、すぐにこのイベントシーケンスが返されます。
- は(失敗コールバック中)
- (成功コールバックで) "インストール" "拡張インストール失敗、未定義"
- は、「返さをインストール
- (右
chrome.webstore.install()
への呼び出しの前に) "インストールを呼び出します"。 "
(chrome.webstore.install()
への呼び出しからの復帰後に)どこかの真ん中に、非同期的に、私はインライン設置ポップアップを取得し、それを受け入れます。
私は思った...
- 障害コールバックは唯一失敗した場合に呼び出される必要があります。
- 失敗の理由は、
undefined
ではなく、意味があるはずです。 - 成功コールバックは、ユーザーがインストールを承認するまで延期する必要があります。
私は何か間違っている必要があります。 ...
正しい。 '()'は、 '.install(...)'メソッドが呼び出される前であっても、すぐに両方のコールバック関数を実行します。これらの括弧を削除することで、_reference_を関数としてパラメータとして渡すことができます。 もう少し詳しい情報を提供します。 'install'メソッドは'() 'をコールバック_references_の後ろに置いて、これらのコールバックの1つが呼び出される必要があるときにそれらの関数の1つを関数として実行します。これは成功コールバックが呼び出されたときに 'success();'を使って行われます。 –
*(額を刺す)*ありがとう! –