Pobieranie kodu źródłowego bieżącej strony z rozszerzenia chrome

Mam rozszerzenie chromowane. muszę przeanalizować ze źródła HTML bieżącej strony. znalazłem tutaj wszystkie rodzaje rozwiązań ze stronami w tle i skryptami zawartości, ale żaden mi nie pomógł. oto co mam do tej pory:
manifest.json:

{
  "name": "Extension",
  "version": "1.0",
  "description": "Extension",
  "browser_action": {
    "default_icon": "bmarkred.ico",
    "popup": "Test.html"
  },
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["content.js"]
    }
  ],
  "background": {
    "page": "backgroundPage.html"
  },
  "permissions": [
    "cookies",
    "tabs",
    "http://*/*", 
    "https://*/*"
  ]
}

background.html:

<html>
<head>
<script type="text/javascript">
    try {
        chrome.tabs.getSelected(null, function (tab) {
            chrome.tabs.sendRequest(tab.id, {action: "getSource"}, function(source) {
                alert(source);
            });
        });
    }
    catch (ex) {
        alert(ex);
    }
</script>
</head>
</html>

content.js:

chrome.extension.onRequest.addListener(function(request, sender, callback) {
    if (request.action == "getSource") {
        callback(document.getElementsByTagName('html')[0].innerHTML);
    }
});

Alert zawsze alarmuje niezdefiniowany. nawet jeśli zmienię zawartość content.js, funkcja wywołania zwrotnego:

callback('hello'); 

wciąż ten sam wynik. Co ja robię źle? może idę w niewłaściwy sposób. naprawdę potrzebuję tego. Gdy użytkownik otworzy okno podręczne rozszerzenia (i tylko wtedy), potrzebuję kodu HTML bieżącej strony, aby móc go przeanalizować. jakieś sugestie?

questionAnswers(1)

yourAnswerToTheQuestion