Обход отсутствия всплывающего окна, если я хочу, чтобы javascript запускался при нажатии расширения

У меня есть расширение Chrome, которое я хочу запускать всякий раз, когда нажимаю всплывающее окно. В настоящее время я могу сделать это, только если удалю popup.html из manifest.json, поскольку на это есть ограничение. Однако мне нужен popup.html

Как получить оба?

Я пробовал размещать одно и то же везде, в popup.html, в popup.js (который правильно связан в popup.html) и ничего.

Короче говоря, если я размещу это в background.js:

chrome.browserAction.onClicked.addListener(function(info, tab) {
    speakMe();
    });

Оно работает.

Однако это подразумевает отсутствие popup.html в манифесте. Итак, естественно, я пытаюсь разместить это:

    <script>
    chrome.browserAction.onClicked.addListener(function(info, tab) {
  speakMe();
});
    </script>

в popup.html. Это не работает. При нажатии на значок всплывающее окно отображается нормально, но ничего не происходит.

Я тоже пытался поместить его в popup.js, но ничего. Что я делаю неправильно?


person user19882    schedule 15.07.2013    source источник


Ответы (1)


Добавьте прослушиватель загрузки в ваш popup.js:

onload = function() { console.log("I loaded!"); };

В этой функции вы можете делать интересные вещи, когда появляется всплывающее окно. Если вы хотите получить больше фантазии, вы можете столкнуться с проблемами, описанными в https://code.google.com/p/chromium/issues/detail?id=31262.

Кстати, вы не сказали нам, что означает «Это не работает» (какая строка не работает? Есть ли сообщения об ошибках консоли?), поэтому трудно быть уверенным, что этот ответ (или любой другой) полезен для вас. См. https://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist шаги, которые необходимо выполнить, чтобы убедиться, что предоставленные ответы являются ответами на ваш вопрос.

person sowbug    schedule 15.07.2013
comment
Привет. Выгрузка работает! Однако функция, которую мне нужно запустить, находится в другом файле (файл background.js для расширения). Можно как-нибудь назвать? - person user19882; 15.07.2013
comment
Вы должны принять этот ответ, если он отвечает на ваш вопрос, а не задавать второй вопрос в комментариях. Что касается вашего второго вопроса, он выглядит как дубликат stackoverflow.com/questions/13777887/ или что-то подобное. - person sowbug; 16.07.2013