Advertisement
mightyroot

Chrome injected Javascript

Aug 29th, 2012
448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. manifest.json — стандартный файл описания расширения
  2. background.js — content script, загружающий внедряемый код
  3. injected.js — непосредственно внедряемый код
  4. jquery.js — используется для получения содержимого файла скрипта через ajax. Подробную информацию можно найти на сайте jquery.com
  5. Рассмотрим подробнее содержимого каждого из файлов:
  6.  
  7. manifest.json
  8.  
  9. {
  10.   "name": "JS Code Injection",
  11.   "version": "1.0",
  12.   "manifest_version": 2,
  13.   "content_scripts": [
  14.     {
  15.       "matches": [ "http://extension.target.url" ],
  16.       "js": [ "jquery.js", "background.js" ],
  17.       "run_at": "document_end"
  18.     }
  19.   ],
  20.   "web_accessible_resources": [
  21.     "/injected.js"
  22.   ]
  23. }
  24.  
  25. Файл с внедряемым кодом injected.js описан в разделе web_accessible_resources, для того чтобы позднее получить к нему доступ из content-скрипта.
  26.  
  27. injected.js
  28.  
  29. function injected_main() {
  30.     alert('Injected!');
  31. }
  32.  
  33. возможно использовать локальное javascript окружение страницы, в которую внедряется код.
  34.  
  35. background.js
  36.  
  37. $.get(chrome.extension.getURL('/injected.js'),
  38.     function(data) {
  39.         var script = document.createElement("script");
  40.         script.setAttribute("type", "text/javascript");
  41.         script.innerHTML = data;
  42.         document.getElementsByTagName("head")[0].appendChild(script);
  43.         document.getElementsByTagName("body")[0].setAttribute("onLoad", "injected_main();");
  44.     }
  45. );
  46.  
  47. Мы используем стандартную функцию Chrome Extension API chrome.extension.getURL(), которая возвращает путь, локальный для расширения.
  48. Далее мы запрашиваем данный файл через ajax и после успешного получения создаем новый элемент в основной странице (Благодаря Shared DOM мы можем манипулировать элементами страницы без лишних усилий)
  49. Последним пунктом мы устанавливаем функцию, которая будет вызвана после загрузки страницы (функция injected_main() описана в файле injected.js)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement