Действие браузера Chrome не работает - PullRequest
27 голосов
/ 21 декабря 2009

Я пытаюсь создать расширение для Chrome, однако мое действие браузера click не работает! Я попробовал почти все. Вот моя установка:

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

Ответы [ 6 ]

46 голосов
/ 21 декабря 2009

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

4 голосов
/ 19 июля 2011

Вам нужно удалить popup.html, у вас уже есть всплывающее окно в popup.html, теоретически background.html должен выполнить событие для browserAction, но это неправильно. Когда вы щелкнули в значке приложения, во всплывающем окне уже определена функция 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 ();

Ну, я надеюсь, это поможет вам.

1 голос
/ 29 августа 2011

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

0 голосов
/ 13 апреля 2019

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

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

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

"browser_action": {
    "default_icon": "img/icon.png",
    "default_popup": "popup.html"
  }
0 голосов
/ 21 декабря 2009

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

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

0 голосов
/ 21 декабря 2009

Согласно документ :

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();
});

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...