2012-09-05 28 views
3

我們已經構建了一個Chrome擴展程序,通過在Gmail的正下方插入電子郵件的debunk來對抗鏈接電子郵件。Chrome擴展程序需要手動重新激活才能顯示

問題是,當用戶添加擴展名時,直到返回到chrome:// extensions /並取消激活,然後重新激活瀏覽器擴展,它纔會出現。我不確定我們需要做什麼來解決這個問題。

這樣做後,擴展工作。

可以複製的問題,如果你:

  1. http://github.com/dkang9322/chrome_extension
  2. 解壓擴展下載
  3. 前往Chrome下載代碼的ZIP://擴展/和激活開發模式頁首 分機頁面右側
  4. 點擊「加載未打包的擴展名」,然後從驅動器中選擇解壓後的擴展名 目錄

這將安裝擴展程序,但不會顯示在您的Gmail中,直到您導航回擴展頁面並取消激活,然後重新激活擴展程序。然後,如果你去看電子郵件,你會看到它。

非常感謝您任何時候可能需要查看此信息。

+0

我發現刷新選項卡還會加載擴展名。 – AntonNiklasson

回答

0

刷新您希望運行內容腳本的選項卡應該可以做到這一點,但是如果您不想要求您可以將「按需」插入到您的內容腳本中,需要分機時,開始,像這樣:

// Injects content_script.js into tab with id 1234 
injectScriptInTab('content_script.js', 1234); 

function injectScriptInTab(url, tabId) { 
    readFile(url, function(scriptBody) { 
     chrome.tabs.executeScript(tabId, { code: scriptBody }); 
    }); 
} 

function readFile(url, callback) { 
    var xhr = new XMLHttpRequest(); 
    try { 
     xhr.onreadystatechange = function(){ 
      if (xhr.readyState != 4) { 
       return; 
      } 

      if (xhr.responseText) { 
       callback(xhr.responseText); 
      } 
      else { 
       throw new Error('No data returned for readFile: ' + url); 
      } 
     } 
     xhr.onerror = function(error) { 
      console.error(error); 
     } 
     xhr.open("GET", url, true); 
     xhr.send(null); 
    } catch(e) { 
     console.error(e); 
    } 
} 

爲了保持清醒,你可以把它放到你的content_script.js的東西,防止腳本從給定片內被執行的可能不止一次,例如

if (window.loadedMyContentScript) return; 
window.loadedMyContentScript = true; 
/* remainder of content script */ 
相關問題