2009-12-21 4 views
22

Chrome 확장을 만들려고하는데 browser action 클릭이 작동하지 않습니다! 나는 거의 모든 것을 시도했다. 여기 내 설정이다 :Chrome 브라우저 동작이 작동하지 않음

의 manifest.json :

{ 
"name": "blah", 
"version": "1.0", 
"description": "blah", 
"browser_action": { 
    "default_icon": "icon1.png", 
    "popup": "popup.html" 
}, 
"permissions": [ 
    "bookmarks", 
    "tabs", 
    "http://*/*", 
    "https://*/*"  
], 
"background_page": "background.html" 
} 

popup.html :

<html> 
<head> 
<script> 
<!-- Try adding the listener in popup.html --> 
    chrome.browserAction.onClicked.addListener(function(tab){ 
    console.log("Hello from popup"); // This does not show up either 
    }); 
</script> 
</head><body> 
Hello 
</body> 
</html> 

background.html :

<html> 
<head> 
<script> 
console.log("Background.html"); // This gets displayed. O.K. 

function hello() { 
    console.log("HELLO"); // THIS NEVER GETS DISPLAYED 
} 

// Supposed to Called when the user clicks on the browser action icon. 
chrome.browserAction.onClicked.addListener(hello); 
</script> 
</head> 
</html> 

하지만 클릭 아무리 열심히 아이콘은 아무런 일도 일어나지 않으며 "HELLO"는 콘솔에 출력되지 않습니다!

Chrome 4.0.249.43을 사용하고 있습니다. 나는 베타 버전을 설치했으나 출시 된 버전 (동일한 버전 번호)과 정확히 동일합니다. 그게 문제가 될 수 있습니까?

답변

40

onclick 이벤트에 "팝업"을 사용할 수 없습니다. 매니페스트 파일에서 popup.html을 삭제합니다. 배경 페이지를 유지하면 효과가 있습니다.

+5

맞습니다. 팝업은 onclick 이벤트를 완전히 제거합니다! 그걸 알아 내는데 이틀이 걸렸어. – drozzy

+1

Chrome 확장 팀의 모든 사용자가 POLA에 대해 들어 봤습니까? https://en.wikipedia.org/wiki/Principle_of_least_astonishment – Pacerier

+0

크롬의 확장 문서가 아프다 – Legends

0

doc에 따르면 : 그래서

chrome.browserAction.onClicked.addListener(function(Tab tab) {...}); 

:

// Supposed to be called when the user clicks on the browser action icon.  
chrome.browserAction.onClicked.addListener(function(tab) { 
    hello(); 
}); 

+0

그는 결코 "탭"을 사용하지 않았고 컨텍스트 ('this')를 사용하지 않았으므로 아무런 차이가 없습니다 ... –

0

당신이 배경 페이지에 대한 올바른 자바 스크립트 콘솔을보기,하지 않을 당신이 있는지 있습니까 작동합니다 다른 탭을 위해?

hello() 메소드를 백그라운드 페이지에 전역 변수로 설정 한 다음 popup.html에 해당 변수를 검색하고 (chrome.extension.getBackgroundPage() 사용) 경고로 표시 할 수 있습니다.

+0

안녕하세요, 저는 popup.html에 리스너를 추가하려고 시도한 것을 보여주기 위해 편집했습니다. 그것은 작동하지 않습니다 ... – drozzy

2

popup.html을 삭제해야합니다. 이론적으로 popup.html에 팝업이 있습니다. 이론적으로 background.html은 browserAction에 대한 이벤트를 수행해야하지만 잘못되었습니다. Icon of you 앱을 클릭하면 popClick에 onClicked 함수가 이미 정의되어 있습니다.

내가 원하는 것을 모르지만 브라우저를 클릭하면 많은 기능을 만들 수 있습니다.

예를 들어 :

foo(){ 
     if(browserAction && browserAction.onClicked) // you can add all stuff that you need. 
     do something 
    } 

당신은 chrome.extension.getBackgroundPage()와 popup.html에서 호출 foo는(); background.html에서 할.

글쎄, 내가 당신에게 도움이되기를 바랍니다.

1

크롬 확장 프로그램을 만들 때 몇 가지 문제가있었습니다. manifest.json 또는 백그라운드 페이지를 변경 한 후에 확장 프로그램을 다시로드해야합니다. 다시로드하려면 확장 페이지 (공구 모양> 도구> 확장 프로그램)로 이동하여 다시로드를 선택하십시오. 그것은 단지 문제의 원인일지도 모릅니다.

관련 문제