0
我正在開發使用原生消息傳送的Google Chrome擴展程序。
在一些測試(與本機主機已經手動安裝之前)我已經成功地連接並執行我需要的一切。一切都很好。
我需要在安裝後立即下載消息併發送給主機。
我可以在安裝擴展程序時自動下載它。如何檢查Native Host是否已安裝?
var downloadItem = function(){
chrome.downloads.download({
url: "http://example.net/downloads/host.exe"
}, insertContentScripts);
}
chrome.runtime.onInstalled.addListener(downloadItem);
下載後開始的內容腳本是在特定的標籤注入。
var insertContentScripts =
chrome.windows.getAll({
populate: true
}, function (windows) {
var i = 0, w = windows.length, currentWindow;
for (; i < w; i++) {
currentWindow = windows[i];
var j = 0, t = currentWindow.tabs.length, currentTab;
for (; j < t; j++) {
currentTab = currentWindow.tabs[j];
// load just on example.com pages
if (currentTab.url.match(regex)) {
injectIntoTab(currentTab);
}
}
}
});
}
var injectIntoTab = function (tab) {
// You could iterate through the content scripts here
var scripts = chrome.manifest.content_scripts[0].js;
var i = 0, s = scripts.length;
for(; i < s; i++) {
console.debug("Inserting script '" + scripts[i] + "' to tab " + tab.url);
chrome.tabs.executeScript(tab.id, {
file: scripts[i]
});
}
}
如何檢查安裝在主機的時候,然後用它連接?
只需嘗試定期連接:當應用程序未安裝時,它會返回錯誤或未定義。 – wOxxOm
@wOxxOm我實際上已經用'while(true)'試過了,但它崩潰了chrome =/ –
'while(true)'永遠不是解決方案。 「定期」是指setInterval或setTimeout。 – wOxxOm