Ответ 1
Ваш код не работает, поскольку он нарушает стандартную политику безопасности контента. Я создал скринкаст одной минуты, чтобы показать, что не так:
Во-первых, я показал, как отладить проблему. Щелкните правой кнопкой мыши на своей всплывающей кнопке и нажмите "Inspect popup" . После этого вы увидите следующее сообщение об ошибке:
Отказаться от выполнения inline script, поскольку он нарушает следующую директиву политики безопасности содержимого: "script -src" self "chrome-extension-resource:".
Это объясняет, что ваш код не работает, потому что он нарушает CSP по умолчанию: Inline JavaScript не будет выполнен. Чтобы решить эту проблему, вам необходимо удалить весь встроенный JavaScript из вашего HTML файла и поместить его в отдельный файл JS.
Результат показан ниже:
hello.html
(всплывающая страница)
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p id="demo">=a</p>
<button type="button" id="do-count">Count</button>
<script src="popup.js"></script>
</body>
</html>
popup.js
var a=0;
function count() {
a++;
document.getElementById('demo').textContent = a;
}
document.getElementById('do-count').onclick = count;
Обратите внимание, что я заменил innerHTML
на textContent
. Научитесь использовать textContent
вместо innerHTML
, когда вы намерены изменить текст. В этом простом примере это не имеет значения, но в более сложных приложениях это может стать проблемой безопасности в виде XSS.