2016-02-11 34 views
0

不同的內容腳本,我需要做的以下行爲的延伸。該popup.html應該有兩個按鈕或兩個單選按鈕(按鈕更容易,因爲我沒有保存選定值就像收音機),並根據用戶的選擇我必須執行一個腳本或其他。無論是腳本加載和用戶想使用另一種同樣之後,我不得不重新加載頁面以「卸載」的前一個。任何人都可以給我一個方法來完成這個?的Chrome擴展/執行取決於選擇在popup.html

目前,我有這樣的:

popup.js

$(document).ready(function() { 
    var firstTime = true; 
    $("input[name='method']").change(function() { 
     if($(this).val() === "events") { 
      if(!firstTime) { 
       chrome.tabs.reload(null, null, function(){ 
        chrome.tabs.executeScript(null, {file: "content_events.js", runAt: "document_end"}); 
       }); 
      } else { 
       chrome.tabs.executeScript(null, {file: "content_events.js", runAt: "document_end"}); 
       firstTime = false; 
      } 
     } else { 
      if(!firstTime) { 
       chrome.tabs.reload(null, null, function(){ 
        chrome.tabs.executeScript(null, {file: "content_timer.js", runAt: "document_end"}); 
       }); 
      } else { 
       chrome.tabs.executeScript(null, {file: "content_timer.js", runAt: "document_end"}); 
       firstTime = false; 
      } 
     } 
    }); 
}); 

manifest.json的

"permissions": [ 
"tabs", 
"activeTab", 
"<all_urls>" 
], 

第一次腳本被正確加載,但是當我改變它的頁面重新加載,但新的腳本沒有加載(我認爲它是在刷新頁面之前加載的) 。我嘗試了runAt屬性的所有可能性,也沒有它。我嘗試沒有在tabs.reload的回調函數中注入腳本,但沒有運氣。

感謝您的幫助!

回答

0

看起來要注入的JavaScript文件到頁面取決於變量的值。您可以設置一個監聽器與chrome.tabs.onUpdated方法,然後再調用chrome.tabs.executeScript根據您的變量的值注入正確的文件。一定要監聽窗口負荷事件,如果你打算在你的腳本做任何DOM操作。

相關問題