0
在我的背景(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});
然后添加的历史页面上的监听......成功了!
第一个解决方案对于1个url /图像来说确实很快且容易,但是它能用于60个urls吗? – LDK 2010-10-21 17:02:00
@LDK我认为它仍然会,但如果你需要传递如此多的数据,那么其他解决方案可能会更好。如果您传递大量数据,则使用长期连接会更有效:http://code.google.com/chrome/extensions/dev/messaging.html#connect – serg 2010-10-21 17:11:59