2011-04-07 4 views
0

후속 조치 this. 나는 거의 다 왔어. 그러나 한 가지 문제가 있습니다. 옵션 페이지에서 사이트를 입력하고 저장 버튼을 클릭하면 상황에 맞는 메뉴 항목이 업데이트되지 않습니다. 새로운 제품으로 교체하려면 연장 연장을해야합니다 !! 어떻게 해결할 수 있습니까 ?? 어쩌면 확장 API 메서드를 제거하거나 업데이트해야합니까? 방법?? 지금크롬 확장 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

답변

0

상황에 맞는 메뉴를 업데이트하려면 Chrome 확장 프로그램이 Chrome을 다시 시작해야합니다.

이 문제는 코드로 해결할 수없는 것 같습니다. 컨텍스트 메뉴는 백그라운드 페이지에서만 만들 수 있지만 배경 페이지는 확장 프로그램이 시작될 때로드됩니다 (예 : Chrome이 시작됨).