【发布时间】:2016-02-24 00:42:25
【问题描述】:
我正在尝试创建一个 chrome 扩展程序,该扩展程序从特定网站上抓取一些内容,然后打开一个新选项卡并使用抓取的数据进行处理。
下面是我做的一个测试,看看我可以如何做到这一点。不幸的是,当我收到此错误时,我似乎无法执行 newtab-script.js 文件:
运行 tabs.executeScript 时未检查 runtime.lastError:不能 访问url的内容 “chrome-extension://FAKEIDgfdsgfdsgfdsgdsgfdsgFAKEID/newpage.html”。 扩展清单必须请求访问此主机的权限。 在 Object.callback (chrome-extension://FAKEIDgfdsgfdsgfdsgdsgfdsgFAKEID/background.js:43:25)
websitescrape.js
var button = document.createElement("button");
button.classList.add("web-scrape");
button.innerHTML = "scrape web";
document.querySelector('.placeIWantToPutButton').appendChild(button);
button.addEventListener('click', scrapeData);
function scrapeData(){
//do website scraping stuff here...
var fakedata = [{test:"data1"},{test:"data2"}];
//send scraped data to background.js
chrome.runtime.sendMessage({setdata: fakedata}, function(tab){
//callback
});
}
background.js
var dataTempStorage = [];
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
if (request.setdata) {
dataTempStorage = request.setdata;
chrome.tabs.create({
'url': chrome.extension.getURL('newpage.html')
}, function(tab) {
chrome.tabs.executeScript(tab.id, {
file:chrome.extension.getURL("newtab-script.js")});
});
}
if (request == "getdata") {
sendResponse({data: dataTempStorage});
}
});
newtab-script.js
chrome.runtime.sendMessage("getdata", function (response) {
doStuff(response.data);
});
function doStuff(){
//Do staff on newpage.html with data scraped from original page
}
newpage.html
// page ready to be filled with awesome content!
【问题讨论】:
-
仅供参考,发布扩展的清单通常会有所帮助。
标签: javascript html google-chrome google-chrome-extension