1

다음은 내가하고 싶은 일의 예입니다. 여기에 게시하는 목적으로 단순화되었습니다. 실제로 동일한 함수를 호출하는 몇 가지 상황에 맞는 메뉴 항목을 추가하고 싶습니다. 그리고 함수 내에서 호출 된 함수를 구별 할 수 있기를 원합니다.Google 크롬 확장 프로그램 및 상황에 맞는 메뉴 : 하나의 기능을 여러 용도로 사용하는 방법은 무엇인가요?

이 예에서는 bit.ly으로 연결을 단축하는 문맥과 tinyURL을 사용하는 문맥 메뉴 항목을 추가합니다.

chrome.contextMenus.create({'title': 'Shorten with bit.ly', 
          'contexts': ['all'], 
          'onclick': shortenLink}); 

chrome.contextMenus.create({'title': 'Shorten with tinyURL', 
          'contexts': ['all'], 
          'onclick': shortenLink}); 

수신 기능은 다음과 같이 보입니다, 기본적으로 모두 infotab는 요청과 함께 전송됩니다,하지만 난 단지에서 함수를 호출하는 상황에 맞는 메뉴를 알아낼 수 있다고 생각하지 않습니다. 여기

function shortenLink(info, tab){ 


} 

은 콘솔이 두 변수의 덤프입니다 : 내가 각 항목에 대한 별도의 기능을 설정할 수 있습니다 알고

Picture.png http://img198.imageshack.us/img198/354/picturedw.png

,하지만 추가 할 컨텍스트 메뉴 항목이 많이있다 그들 모두는 동일한 코드를 많이 공유하기 때문에 모두가 사용하는 하나의 "디스패치"기능 만 갖고 싶습니다. 어떻게해야합니까?

편집

은 아마 내가이 menuItemId 변수를 사용하여 호출 무슨 메뉴 항목을 알아낼 수 있지만, 내가 추가 매개 변수 또는 {method:'bitly'}과 같은 몇 가지 추가 데이터를 전달 할 수 있습니까?

답변

5
chrome.contextMenus.create({'title': 'Shorten with bit.ly', 
          'contexts': ['all'], 
          'onclick': function(info, tab) { 
           shortenLink(info, tab, {method:'bitly'}); 
          }); 

function shortenLink(info, tab, methodObj){ 
    ... 
} 
+0

감사합니다! 아직 테스트하지 않았지만 멋지다! – cwd

관련 문제