我正在进行扩展,并希望从我的Background.js中更改popup.html ...
这是background.js
中的部分 popup=chrome.extension.getViews( {type:"popup"});
html2="Hello World 2";
window.onload=function(){popup[0].document.innerHTML="Hello World 2"};
}
}
答案 0 :(得分:0)
根据documentation,browserAction图标可以触发 OR 操作弹出窗口,但不能同时。您可以通过编程方式在一个或另一个之间切换,但从不同时工作。
如果您的清单中定义了chrome.browserAction.onClicked.addListener
文件,则popup.html
中定义的侦听器将 NOT 被调用。
另一方面,如果要以编程方式修改弹出窗口的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();
});
答案 1 :(得分:-1)
popup
未在您的else语句中定义。如果是这样的声明,你应该在外面做:
popup = chrome.extension.getViews({type:"popup"});
if (typeof $username === 'undefined') {
window.onload = function(){popup.document.innerHTML = "Hello World"};
} else {
window.onload = function(){popup.document.innerHTML = "Hello Wolrd 2"};
}