在我的背景(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>
然而,background.html中的“view.setImageUrl(screenshotUrl)”失败了,因为它说视图没有这样的功能。为了清楚起见,我正在尝试访问history.html中的函数并将参数传递给它(screenshotUrl)。 编辑:重新Serg的建议我在后台用以下内容替换了var addImage函数:
var port = chrome.tabs.connect(tab.id,{name: "history_connect"});
port.postMessage({mType:"url",url:screenshotUrl});
然后在历史页面上添加了一个监听器......工作!
答案 0 :(得分:1)
之前我没有使用getViews()
因此我无法对此发表评论(当您将chrome.extension.getViews()
转储到其中时,控制台会说些什么?),但这里有几个解决方法:
history.html?url=<urlencoded_url>
)chrome.extension.sendRequest({url:url});
,history.html中为chrome.extension.onRequest.addListener()
chrome.extension.getBackgroundPage().getMyUrl()
我会使用第一种解决方案,因为它是最简单和最快的。