Ответ 1
У вас нет всплывающего окна с событием onclick. Удалите popup.html из файла манифеста. И сохраните фоновый рисунок, и он будет работать.
Я пытаюсь создать расширение 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. Я установил бета-версию, НО она точно такая же, как и выпущенная версия (тот же номер версии). Может ли это быть проблемой?
У вас нет всплывающего окна с событием onclick. Удалите popup.html из файла манифеста. И сохраните фоновый рисунок, и он будет работать.
Вам нужно удалить popup.html, у вас уже есть всплывающее окно popup.html в теории, background.html должен сделать событие для browserAction, но не так. Когда вы нажали значок Icon вашего приложения, там уже была определена функция onClicked во всплывающем окне.
Я не знаю, что вам нужно, но вы можете делать много функций, когда вы нажимали в браузере.
Например: в background.html do:
foo(){
if(browserAction && browserAction.onClicked) // you can add all stuff that you need.
do something
}
и вы вызываете из popup.html с chrome.extension.getBackgroundPage(). foo();
Я надеюсь, что это поможет вам.
У меня были некоторые проблемы при попытке создать расширение chrome. Убедитесь, что вы обновили расширение после каких-либо изменений на manifest.json или на фоновом изображении. Чтобы перезагрузить его, перейдите на страницу расширений (гаечный ключ > инструменты > расширения) и выберите перезагрузку. Это может быть причиной проблемы, все остальное выглядит просто отлично.
В соответствии с 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();
});
должен работать
Вы уверены, что просматриваете правильную консоль JavaScript для фоновой страницы, а не для другой вкладки?
Попробуйте, чтобы ваш метод hello() установил глобальную переменную на фоновой странице, затем нажмите кнопку в popup.html, чтобы получить эту переменную (используя chrome.extension.getBackgroundPage()) и отобразить ее как предупреждение.
Я нашел причину с моей проблемой на: - MDN
Действие браузера .onClicked: - Запускается при нажатии значка действия браузера. Это событие не сработает, если в браузере есть всплывающее окно.
удалил deafult_popup из файла manifest.json
"browser_action": {
"default_icon": "img/icon.png",
"default_popup": "popup.html"
}