Javascript 从Chrome扩展中的后台页面访问功能
在我的背景(background.html)页面中,我有以下js:Javascript 从Chrome扩展中的后台页面访问功能,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,在我的背景(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
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>
然后在历史页面上添加了一个侦听器。。。成功了 我以前没有使用过
getViews()
,所以我不能对此发表评论(当您将chrome.extension.getViews()
转储到控制台中时,控制台会说什么?),但这里有两个解决方法:
- 在创建选项卡时将url作为get参数传递(
)history.html?url=
- 使用请求
chrome.extension.sendRequest({url:url})和history.html中的
chrome.extension.onRequest.addListener()
- 使用“拉”而不是“推”。在history.html中,您可以使用
chrome.extension.getBackgroundPage().getMyUrl()
我会使用第一个解决方案,因为它是最简单、最快的。第一个解决方案对于1个url/图像来说确实是快速、简单的,但它对60个url有效吗?@LDK我认为仍然有效,但如果您需要传递这么多数据,那么其他解决方案可能会更好。如果要传递大量数据,则使用长寿命连接会更有效:
var port = chrome.tabs.connect(tab.id,{name: "history_connect"});
port.postMessage({mType:"url",url:screenshotUrl});