我在尝试使用the chrome.webstore.install(link, success, fail)
function内嵌加载谷歌浏览器扩展程序。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>
这是Javascript,它出现在关闭</body>
标记之前。
<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_的后面以执行其中之一作为函数。这是通过'success();'完成的,例如,调用成功回调。 –
*(sma额)*谢谢! –