我需要使用Google Chrome扩展程序从网页中提取所有超链接。这很容易,但我不能再花时间去理解我做错了什么愚蠢的事情。在这里我的清单:
{
"manifest_version": 2,
"name": "RL Helper",
"description": "This extension examines the Ralph Lauren website.",
"version": "1.0",
"background": {
"scripts": ["RLHelperBackground.js"]
},
"page_action": {
"default_icon": "RL3.jpg"
},
"permissions": [
"activeTab",
"storage",
"https://www.ralphlauren.com/*",
"tabs"
]
}
这真的很不错但是当我点击图标时,没有任何反应。这是background.js:
console.log ('RLHELPER BACKGROUND.JS v 1.0');
////////////// LISTENERS //////////////////
// ON CLICKED PAGE ACTION
chrome.pageAction.onClicked.addListener(doIconClick);
// ON UPDATED TABS
chrome.tabs.onUpdated.addListener(doTabUpdatedAction);
// ON REMOVED TABS
chrome.tabs.onRemoved.addListener(doTabRemovedAction);
// ON EXTENSION REQUEST
chrome.extension.onRequest.addListener(doOnRequestAction);
function doIconClick(tab) // examine current page when icon clicked
{
console.log('Icon Clicked in Window '+tab.windowId+' Tab '+tab.id+' on '+tab.url.split('?')[0]);
mainWindowId=tab.windowId;
timeOfFirstRequest=new Date().getTime();
if (tab.url.indexOf("https://www.ralphlauren.com") > -1)
{
console.log(' Ralph Lauren Home page');
searchProcessTabId=tab.id;
chrome.tabs.executeScript(searchProcessTabId, {file: "pageScraper.js"});
};
}
function doTabUpdatedAction(tab_id, data, tab)
{
console.log('Window '+tab.windowId+' Tab '+tab_id+' Updated '+tab.url.split('?')[0]+' Status: '+data.status);
if (data.status=='complete')
{//do these only on 'complete', not also on 'loading'
if (tab.url.indexOf("https://www.ralphlauren.com") > -1)
{
console.log('Displaying Icon');
chrome.pageAction.show(tab_id);
}
}
}
console.log('RLHELPER BACKGROUND.JS waiting for events'); console.log(' ');
此代码改编自我四年前制作的刮刀,效果很好。但是很多事都发生了变化。现在控制台日志显示所有控制台消息到Background.js的EOF,但是当我点击图标时,我只得到图标已经显示并点击但仅此而已。无法判断脚本是否被注入。这是onClick js。
//pageScraper.js v 1
console.log('');
console.log('pageScraper.js version 1');
//display number of links in page
console.log(document.GetElementsByTagName("a").length);
console.log('pageScraper.js READY');
这里有些愚蠢我不知道。我应该能够在后台页面中执行此操作,更不用说发送脚本来完成这项简单的工作。
答案 0 :(得分:1)
我是对的。这是一个令人难以置信的愚蠢问题。我只是忘了每个标签都有自己的控制台,所以我只看后台页面控制台,期待看到我的消息。当我最终打开目标页面以便在前台使用后台页面控制台进行检查时,我注意到目标页面控制台上的响应。