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