1

通常,瀏覽器每隔幾個小時檢查一次擴展更新,您可以通過單擊「立即更新擴展」按鈕手動覆蓋此更新。我想使這個無縫,讓我的擴展能力更新一個可用的時刻。通過Ajax,它檢查值得服務器並知道更新可用。我想讓他們告訴瀏覽器更新它。這可能嗎?有沒有辦法讓打包的託管chrome擴展請求chrome更新它?

這是一個打包的擴展,是在外部託管:http://developer.chrome.com/dev/extensions/hosting.html

UPDATE:這是工作的代碼!

的index.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Hello World</title> 
    <link href="styles/main.css" rel="stylesheet"> 
    <script src="test.js"></script> 
</head> 
<body> 
    <h1>Hello, World 2 again 17!</h1> 
</body> 
</html> 

test.js(偵聽文件點擊並告訴背景內容腳本來更新)

window.onload = function() 
{ 
    document.body.onclick = function() 
    { 
     chrome.runtime.requestUpdateCheck(function(status) { 
       if (status == "update_available") { 
        console.log("update pending..."); 
       } else if (status == "no_update") { 
        console.log("no update found"); 
       } else if (status == "throttled") { 
        console.log("Oops, I'm asking too frequently - I need to back off."); 
       } 
     }); 
    } 
} 

main.js(後臺腳本)

//You need to put reload in this callback 
chrome.runtime.onUpdateAvailable.addListener(function(details) { 
    console.log("updating to version " + details.version); 
    chrome.runtime.reload(); 
}); 
+0

可能重複[?如何強制從擴展本身Chrome擴展程序自動更新](http://stackoverflow.com/questions/7742059/how-to-force- a-chrome-extension-autoupdate-from-the-extension-itself) – KingCronus

+0

@KingCronus它不是重複的。 Mine是一個自我託管的打包應用程序。它不是由Chrome網上應用店提供的,所以問題/答案不適用。 –

回答

2

您是否嘗試過使用chrome.runtime.requestUpdateCheck()?你的代碼可能是這樣的:

chrome.runtime.requestUpdateCheck(function(status,details){}); 
chrome.runtime.onUpdateAvailable(function(details){ 
    console.log('Updating to version: ' + details.version); 
    chrome.runtime.reload(); 
}); 
+0

謝謝你,我認爲它*可能*工作。我這樣做了,它曾經工作過一次,但其他所有時間我都試過,它會打印到控制檯,它正在更新,但是它永遠不會更新。無論我嘗試多少次,直到通過單擊「現在更新擴展」來執行手動方式爲止。看到我上面的代碼。 –

+0

它**看到**更新!控制檯打印出它正在更新,並在那裏顯示正確的版本,擴展頁面顯示它消失了一秒鐘,然後重新出現,但作爲舊版本!無論我嘗試多少次,它都會繼續這樣做。但這意味着Chrome ** IS **加載更新,只是不安裝它。 (另外,我添加了setTimeout延遲,但它仍然不能解決這個問題) –

+0

我相信我有它的工作!你的第二個建議是關鍵。我把重載放在'chrome.runtime.onUpdateAvailable'監聽器中,現在它正在工作! –