Подтвердить что ты не робот

Действие браузера Chrome не работает

Я пытаюсь создать расширение 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. Я установил бета-версию, НО она точно такая же, как и выпущенная версия (тот же номер версии). Может ли это быть проблемой?

4b9b3361

Ответ 1

У вас нет всплывающего окна с событием onclick. Удалите popup.html из файла манифеста. И сохраните фоновый рисунок, и он будет работать.

Ответ 2

Вам нужно удалить 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();

Я надеюсь, что это поможет вам.

Ответ 3

У меня были некоторые проблемы при попытке создать расширение chrome. Убедитесь, что вы обновили расширение после каких-либо изменений на manifest.json или на фоновом изображении. Чтобы перезагрузить его, перейдите на страницу расширений (гаечный ключ > инструменты > расширения) и выберите перезагрузку. Это может быть причиной проблемы, все остальное выглядит просто отлично.

Ответ 4

В соответствии с 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();
});

должен работать

Ответ 5

Вы уверены, что просматриваете правильную консоль JavaScript для фоновой страницы, а не для другой вкладки?

Попробуйте, чтобы ваш метод hello() установил глобальную переменную на фоновой странице, затем нажмите кнопку в popup.html, чтобы получить эту переменную (используя chrome.extension.getBackgroundPage()) и отобразить ее как предупреждение.

Ответ 6

Я нашел причину с моей проблемой на: - MDN

Действие браузера .onClicked: - Запускается при нажатии значка действия браузера. Это событие не сработает, если в браузере есть всплывающее окно.

удалил deafult_popup из файла manifest.json

"browser_action": {
    "default_icon": "img/icon.png",
    "default_popup": "popup.html"
  }