Согласно documentation, значок browserAction может либо иметь действие вызвало ИЛИ всплывающее окно открытое, но не оба одновременно. Вы можете переключаться между одним или другим программным способом, но никогда не работать одновременно.
Слушатель определяется в chrome.browserAction.onClicked.addListener
будет НЕ назвать, если у вас есть popup.html
определенный файл в манифесте.
С другой стороны, если вы хотите программно изменить HTML всплывающего окна, вы можете сделать это, только если всплывающее окно открыто, поэтому вы либо включаете код в файл popup.js
, либо используете chrome.runtime.getBackgroundPage
для доступа к объекту фонового окна и вызова кода, который у вас уже есть.
Например:
background.js
var $username = "noname", $password;
function modifyMyPopup(){
var popup = chrome.extension.getViews({type:"popup"}); //get the open popup windows
for (var i = 0; i < popup.length; i++) //check all open popups
if (popup[i].popupMarker) //if it is our browserAction popup...
popup[i].document.body.innerHTML = "Hello" + $username; //modify its body's innerHTML
}
chrome.storage.sync.get(["username","password"],function(items){ //you can get several items at once from the storage
$username = items.username;
$password = items.password;
});
popup.html
<html>
<head>
<script src="popup.js" defer></script>
</head>
<body>
Goodbye!
</body>
</html>
popup.js
var popupMarker = 1;
chrome.runtime.getBackgroundPage(function(bgPage){
bgPage.modifyMyPopup();
});
Не могли бы вы предоставить нам всю ошибку, включая номер строки? –
Uncaught TypeError: Не удается прочитать документ 'документа' неопределенного (...) background.js строки 20 – Eminem347
В какой строке он указывает? –