Расширение Chrome: как мне изменить DOM определенной страницы с помощью contextMenus? - PullRequest
3 голосов
/ 24 февраля 2012

Как заголовок, как можно применить изменения к другой странице, отличной от фоновой?

Manifest:

{
    "name": "First Extension",
    "version": "1.0",
    "description": "The first extensione tha I made",
    "permissions":["contextMenus", "tabs", "http://localhost/CreativaIly/*"],
    "background_page": "background_page.html",
    "browser_action":{ 
                        "name": "My First Extension!",
                        "default_icon": "Chrome_icon32bn.png",
                        /*"default_popup": "popup.html",*/
                        "default_title": "My First Extension!"
    },
    "icons": {
                "16": "Chrome_icon19color.png",
                "48": "Chrome_icon32color.png",
                "128": "Chrome_icon.png"
    }
}

Фоновая страница:

<!doctype html>
<html>
  <head>
    <title>Background Page</title>
    <script type="text/javascript" src="mootools-core-1.4.2-full-compat.js"></script>
    <script src="script.js" type="text/javascript" ></script>
  </head>
  <body>
  </body>
</html>

1 Ответ

10 голосов
/ 24 февраля 2012

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

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

  • Настройка манифеста для внедрения скрипта контента на все страницы, которые манипулируют DOM так, как вы хотите, когда chrome.extension.onRequest запущен
  • Создайте контекстное меню и прослушивайте события клика
  • Когда срабатывает onclick , захватите tab.id и используйте его для вызова chrome.tabs.sendRequest

Это намного проще, чем может показаться на первый взгляд.

...