从网页Chrome扩展程序中抓取链接

时间:2018-03-21 01:39:27

标签: javascript google-chrome google-chrome-extension

我需要使用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');

这里有些愚蠢我不知道。我应该能够在后台页面中执行此操作,更不用说发送脚本来完成这项简单的工作。

1 个答案:

答案 0 :(得分:1)

我是对的。这是一个令人难以置信的愚蠢问题。我只是忘了每个标签都有自己的控制台,所以我只看后台页面控制台,期待看到我的消息。当我最终打开目标页面以便在前台使用后台页面控制台进行检查时,我注意到目标页面控制台上的响应。