Получение исходного HTML текущей страницы из расширения Chrome

У меня есть расширение для хрома. мне нужно проанализировать из источника HTML текущей страницы. Я нашел здесь всевозможные решения с фоновыми страницами и скриптами контента, но ни одно из них мне не помогло. вот что у меня есть:
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);
    }
});

Предупреждение всегда предупреждает undefined. даже если я изменю в файле content.js функцию обратного вызова на:

callback('hello'); 

все тот же результат. Что я делаю не так? может быть, я иду по этому неправильному пути. что мне действительно нужно это. Когда пользователь открывает всплывающее окно расширения (и только потом ), мне нужен HTML текущей страницы, чтобы я мог его проанализировать. какие-либо предложения?

74
задан Mr T. 27 July 2012 в 08:48
поделиться