7

크롬 확장 프로그램을 개발 중이며 문제가 있습니다. 크롬의 상황에 맞는 메뉴에 항목을 추가하고 메뉴 항목을 클릭하면 팝업 창이 열리길 원합니다. 내 코드는 다음과 같습니다.크롬 확장 프로그램의 상황에 맞는 메뉴에서 팝업 창

function popup(url) { 
window.open(url, "window", "width=600,height=400,status=yes,scrollbars=yes,resizable=yes"); 
} 

chrome.contextMenus.create({"title": "Tumblr", "contexts":["page","selection","link","editable","image","video","audio"], "onclick": popup('http://example.com')}); 

그러나이 코드는 원하는대로 작동하지 않습니다. 컨텍스트 항목을 클릭 한 후에는 팝업 창이 표시되지 않지만 크롬 확장 환경 설정에서 광고 확장을 새로 고친 후에는 팝업 창이 표시되지 않습니다.

미리 감사드립니다.

+0

Yap. 나는 버전 2를 사용하고있다. 그러나 나는 그것을 어떻게 다르게 할 수 있을까? 나는 자바 스크립트에서별로 가르치지 않는다. –

+0

@chaohuang OP 코드에는 인라인 이벤트 처리기가 없습니다. –

답변

5
chrome.contextMenus.create({... "onclick": popup('http://example.com')}) 

은 즉시 popup 함수를 호출하여 팝업이 열립니다. 함수에 대한 참조를 전달해야합니다. 작동하도록 코드를 얻으려면 함수에서 함수 호출을 래핑 :

chrome.contextMenus.create({ 
    "title": "Tumblr", 
    "contexts": ["page", "selection", "link", "editable", "image", "video", "audio"], 
    "onclick": function() { 
     popup('http://example.com'); 
    } 
}); 

window.open()는 팝업을 만드는 데 사용할 수 있습니다. 다른 방법 (단지 그것이 존재한다는 것을 알려주는)은 chrome.windows.create입니다.

+0

좋아요! 그것은 완벽하게 작동합니다. 고마워요! –

관련 문제