Как я могу использовать Content Scripts и Message Passing для сбора метаданных с веб-сайта и отправки их обратно в расширение Chrome?

Я создаю расширение Chrome и очень запутался в том, как работают сценарии контента и передача сообщений. Ниже я подробно описываю цели моего расширения и код, который у меня есть.

Расширение должно:

  1. Быть активным для всех веб-страниц
  2. Соберите метаданные (в частности, ключевые слова) с каждого сайта, на котором находится пользователь.
  3. Передайте метаданные обратно в расширение таким образом, чтобы расширение могло анализировать ключевые слова и действовать соответствующим образом. Расширение будет отображать разный текст в зависимости от категории сайта (например, социальные сети, блог, спортивный сайт)]

Я не включил код для popup.html, так как я могу получить обычный текст во всплывающем окне, когда вы щелкаете значок моего расширения.

Мои файлы на данный момент:


manifest.json

"manifest_version": 2,
"name": "my extension",
"description": "This is my first chrome extension.",
"version": "1.0",

"content_scripts": [ {"matches": ["<all_urls>"], "run_at": "document_end", "js["testscript.js"] }],

"permissions": ["tabs", "http://*/*", "background"],

"background": "background.html",

"browser_action": { "default_icon": "my_logo.png", "default_popup": "popup.html" }

contentscript.js

var meta_keywords = getKeywords();

chrome.extension.sendRequest(meta_keywords);

function getKeywords() {
   data = document.getElementsByTagName("meta");
   keywords = []; 
   var len = data.length;
   for (var i = 0; i < len; i++) {
     if (data[i].name == 'keywords') {
        keywords = data[i].content.split(",");
     }
   }
   return keywords;
}

background.html

//I really have no idea what this means or how to use it...
//I just know that I need some sort of onRequest function

chrome.extension.onRequest.addListener(function(keywords, sender, sendResponse) {})

Любая помощь будет принята с благодарностью. Я прочитал множество руководств и документацию Google, но я просто не понимаю. Заранее спасибо!


person JuliaC    schedule 06.07.2013    source источник
comment
Какую документацию вы использовали? Формат API в вашем вопросе устарел более 10 версий Chrome назад. Чтобы быть в курсе последних событий, прочтите документацию для фоновых страниц и используйте chrome.runtime.sendMessage/onMessage вместо chrome.extension.*.   -  person Rob W    schedule 06.07.2013


Ответы (1)


несколько месяцев назад я пытался создать что-то вроде синглтона для расширения devtools, у него есть обмен сообщениями между страницей содержимого фоновой страницы и страницей devtools, посмотрите

https://github.com/ruddog/chrome-devtools-skeleton/

надеюсь, это будет полезно для вас

person Alex Kneller    schedule 07.07.2013