На моей странице background (background.html) у меня есть следующие js:
function capturePage(){
chrome.tabs.captureVisibleTab(null, function(img){
var screenshotUrl = img;
chrome.tabs.create({"url":"history.html"}, function(tab){
var t = tab;
var addImage = function(){
var view = chrome.extension.getViews()[0];
view.setImageUrl(screenshotUrl);
}
chrome.tabs.onUpdated.addListener(addImage);
});
});
}
chrome.browserAction.onClicked.addListener(capturePage);
и в history.html у меня есть:
<html>
<head>
<title></title>
<script>
function setImageUrl(url){
document.getElementById("target").src = url;
}
</script>
</head>
<body>
<img id="target" src="" >
</body>
</html>
Однако «view.setImageUrl (screenshotUrl)» в background.html завершается ошибкой, поскольку говорит, что представление не имеет такой функции. Просто чтобы прояснить, я пытаюсь получить доступ к функции в history.html И передать ей параметр (screenshotUrl).
РЕДАКТИРОВАТЬ: re предложение Серга Я заменил функцию var addImage в фоновом режиме следующим:
var port = chrome.tabs.connect(tab.id,{name: "history_connect"});
port.postMessage({mType:"url",url:screenshotUrl});
Потом добавил слушателя на страницу истории ... сработало!