2016-08-31 3 views
0

Opera 용 간단한 확장 프로그램을 작성하려고합니다. Chrome에서와 마찬가지로 이미지를 마우스 오른쪽 버튼으로 클릭하면 "Google 검색 이미지"가 추가됩니다. 유사한 확장이 이미 존재하지만 이는 학습을위한 것입니다.오페라 컨텍스트 메뉴 확장 내에서 function (event)

첫 번째 시도는 onClick을 사용했는데 올바른 방법은 아닙니다. 내 bg.js 파일을 다시 쓰려면 this answer을 사용했습니다. 지금은 다음과 같습니다

chrome.runtime.onInstalled.addListener(function() { 
    chrome.contextMenus.create({ 
     title: "Search Google for image", 
     id: "gsearch", 
     contexts: ["image"] 
    }); 
}); 

chrome.contextMenus.onClicked.addListener(function(info, tab) { 
    if (info.menuItemId === "gsearch") { 
     function(event) { 
      chrome.tabs.create({ 
       url: "https://www.google.com/searchbyimage?image_url=" + encodeURIComponent(event.srcUrl); 
      }); 
     } 
    } 
}); 

내가 확장을로드 할 때, 오페라는 function(event) { 오류 메시지 Unexpected token ( 원인 라인 (11)에 대해 불평. 나는 문법과 관련하여 여기에이 누락되어 있으며 전문 지식에 감사드립니다.

+1

if 블록 내의 함수 선언은 ES5에서 유효하지 않으며 사용자의 이름도 없습니다 (두 번 유효하지 않습니다). 그 기능은 무엇일까요? 그거 떨어 뜨려. – Bergi

+0

감사합니다. 이 함수가 없다면'encodeURIComponent'에'event'를 어떻게 전달합니까? – n49o7

+0

'이벤트'란 무엇입니까? 'info'와 같지 않습니까? – Bergi

답변

0

함수는 if 블록 내에서 선언 할 수 없습니다. 또한 infoencodeURIComponent으로 전달할 수 있습니다. 다음 코드가 작동합니다.

chrome.runtime.onInstalled.addListener(function() { 
    chrome.contextMenus.create({ 
     title: "Search Google for image", 
     id: "gsearch", 
     contexts: ["image"] 
    }); 
}); 
chrome.contextMenus.onClicked.addListener(function(info, tab) { 
    if (info.menuItemId === "gsearch") { 
     chrome.tabs.create({ 
      url: "https://www.google.com/searchbyimage?image_url=" + encodeURIComponent(info.srcUrl) 
     }); 
    } 
}); 

Bergi.

관련 문제