通过Chrome Web Store而不是嵌入式安装完成安装后,如何打开标签页通知您已安装Chrome扩展程序?
自2018年6月及以后的Chrome has deprecated inline installation以来,以下机制用于通知是否已安装扩展程序从现在起不起作用:
chrome.webstore.install(url, successCallback, failureCallback)
从现在开始,扩展 必须仅通过Web Store安装。
我们已经建立了一个屏幕共享扩展程序,它可以提示用户共享他的屏幕。
当我们的用户点击“共享屏幕”时,我们打算将他们重定向到网上商店中的Chrome扩展程序,并在他们安装扩展程序后立即重新触发共享屏幕功能。
答案 0 :(得分:0)
这是我从background script(不使用content script)中解决问题的方法:
background.js
onInstalled
事件。postMessage
会通知
安装成功。chrome.runtime.onInstalled.addListener(function listener(details) {
if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {
chrome.tabs.query({
url: [
'https://localhost:3000/*',
'https://staging.foo.com/*',
'https://production.foo.com/*'
]
}, tabs => {
Array.from(tabs).forEach(tab => {
chrome.tabs.executeScript(tab.id, {
code: `window.postMessage('screenshare-ext-installed', window.origin);`
});
});
});
chrome.runtime.onInstalled.removeListener(listener);
}
});
manifest.json
只需确保同时声明externally_connectable
和permissions
您要通知的网站的网址格式。
"externally_connectable": {
"matches": [
"https://localhost:3000/*",
"https://staging.foo.com/*",
"https://production.foo.com/*"
]
},
"permissions": [
"desktopCapture",
"https://localhost:3000/*",
"https://staging.foo.com/*",
"https://production.foo.com/*"
],
只需在某处收听由...触发的postMessage
消息
成功安装的扩展名。
window.onmessage = e => {
if (e.data === 'screenshare-ext-installed') {
// extension successfully installed
startScreenShare()
}
}