2011-04-07 37 views
0

後續到this。我快到了。但是有一個問題。 當我在選項頁面輸入網站並點擊保存按鈕時,contextmenu項目不會更新。 爲了取代他們與新的我必須重新加載擴展! 我該如何解決這個問題?也許我必須使用刪除或更新擴展API方法?怎麼樣??在Chrome擴展II中的選擇和站點搜索

我現在代碼:

manifest.json的:

{ 
    "name": "Context Site Search", 
    "version" : "0.0.0.1", 
    "background_page" : "bg.html", 
    "options_page": "options.html", 
    "permissions" : [ 
    "tabs", 
    "contextMenus", 
    "http://www.google.com" 
    ] 
} 

options.html

function save() { // save button click event handler 


var nodes = document.querySelectorAll("input[type=text]"); 
for (var i=0; i<nodes.length; i++){ 
    if (nodes[i].value == ""){ 
     alert('Enter Data!');return false; 
} else { 
arr.push(nodes[i].value); 


    }} 


localStorage['arr'] = JSON.stringify(arr); 

if (localStorage["arr"]){ 
var elem = document.getElementById("sav").textContent = "Saved!"; 

} 



} 

background.html:

<script type="text/javascript"> 

var ar = JSON.parse(localStorage.getItem("arr")); 

for (var i in ar) { 


chrome.contextMenus.create({ 
    "title": "find ' %s' в "+ ar[i], 
    "contexts": [ "selection"], 
    "onclick" : (function(element){ 
      return function(info, tab) { 
    var baseUrl = "http://www.google.com/search?q=site%3A"; 
    if (info.selectionText) { 
    baseUrl += element + "&q="+ encodeURI(info.selectionText); 
    chrome.tabs.create({"url": baseUrl}); 
    } 
    } 
    })(ar[i]) 


}); 


} 


</script> 

在此先感謝!

+0

所以你有沒有嘗試過'chrome.contextMenus.removeAll'重新創建它們之前? – serg 2011-04-07 03:10:41

回答

0

要更新上下文菜單,Chrome擴展程序需要重新啓動Chrome。

此問題似乎無法通過代碼修復。 由於上下文菜單隻能在後臺頁面中創建,但後臺頁面只在擴展程序啓動時才加載,即Chrome啓動。