Пишемо розширення для google chrome (частина 1)

Мені як частому відвідувачу сайту free-lance.ru було б зручно оперативно отримувати повідомлення про нові проекти. Оскільки я користуюся браузером google chrome, я шукав розширення на цю тему для нього. Було там одне розширення для free-lanfe.ru, але дуже сире і недороблене.

Якщо немає вже існуючого, вирішив написати доповнення сам і поділитися цим процесом з Вами. Писав доповнення вперше, тож критика вітається. Під час опрацювання користувався документацією звідси.

Відразу покажу структуру папок та файлів, яка в мене вийшла:

Це допоможе Вам краще орієнтуватися в проекті і моїх поясненнях.

Можете відразу створити таку ж файлову структуру з файлами - пустушками, які ми поступово будемо наповнювати.

Починаємо наш проект із файлуmanifest.json:

Покладіть в папку img іконку з ім'ям icon.png (або під іншим ім'ям та в іншу папку за умови внесення відповідних змін конфігурації у файліmanifest.json )

Тепер створимо сторінкуoptions.html :

Copy Source Copy HTML

  1. DOCTYPE html >
  2. html >
  3. head >
  4. link rel = "stylesheet" href = "img/options.css" />
  5. meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" />
  6. head >
  7. body >
  8. div id = "main">
  9. label > Логін label >
  10. input type="text" name="login">
  11. label > Пароль label >
  12. input type ="password" name ="passwd">
  13. label > Кількість проектів, що відображаються, label >
  14. input type = "text" name = "proj_count" value = "15">
  15. label > Час оновлення label >
  16. select name ="update_time">
  17. option value="15000"> 15 сек. option >
  18. option value ="30000"> 30 сек. option >
  19. option value ="60000"> 1 хв. option >
  20. option value ="300000"> 5 хв. option >
  21. option value ="600000"> 10 хв. option >
  22. option value ="1800000"> 30 хв. option >
  23. option value ="3600000"> 1 година option >
  24. select >
  25. input type ="submit" value ="Зберегти" id ="save">
  26. div >
  27. body >
  28. html >

Тепер треба трохи ушляхетнити зовнішній вигляд цієї сторінки. А ось тут ми не знаємо підключили до неї файл стилівimg/options.css.

Створюємо його та заповнюємо приблизно наступним вмістом:

Copy Source Copy HTML

  1. *
  2. margin: 0;
  3. padding: 0;
  4. font-size: 13px;
  5. >
  6. body
  7. background: #F3F3FF;
  8. >
  9. #main
  10. margin : 200px auto auto auto ;
  11. padding: 15px 7px;
  12. width: 300px;
  13. border: 2px solid #F3F3FF;
  14. border-radius: 20px;
  15. background : -webkit-gradient( linear, left top, left bottom, from(#D7DCEE ), to( #B3BBD5 ));
  16. -webkit-box-shadow: 0px 0px 9px #888F99;
  17. >
  18. input , select
  19. display: block;
  20. width: 240px;
  21. margin : 5px 0px 15px 40px ;
  22. padding: 2px 4px 2px 4px;
  23. background: #F3F3FF;
  24. background : -webkit-gradient( linear, left top, right bottom, from(#F3F3FF ), to( #E7F0F6 ));
  25. -webkit-box-shadow: 0px 0px 2px #FFF;
  26. border: 1px solid #A5B0C9;
  27. border-radius: 6px;
  28. color: #808090;
  29. outline: none;
  30. font-size: 14px;
  31. >
  32. input [type=submit]
  33. width: 120px;
  34. margin : 25px auto 0 40px ;
  35. cursor: pointer;
  36. >
  37. input:focus , select:focus
  38. border: 1px solid #808090;
  39. color: #506070;
  40. >
  41. input:hover , select:hover
  42. background: #FFF;
  43. >
  44. label
  45. font-size: 15px;
  46. font-weight: bold;
  47. color: #506070;
  48. margin : 0 0 0 10px ;
  49. >

Тепер ми готові своєрозширення завантажити уgoogle chrome !

Для цього відкриємо сторінку розширень (Головне меню -> Інструменти -> Розширення) і увійдемо в режим розробника:

Ми побачимо кілька нових кнопок. Тиснемо кнопкуЗавантажити розпаковане розширення і вибираємо папку з нашим розширенням.

Якщо все правильно зробили. розширення вдало завантажиться і ви побачите його іконку в панелі разом із рештою іконок розширень. Тепер ми зможемо потрапити на сторінку налаштування розширення, натиснувши на відповідне посилання. Ми побачимо вікно наступного змісту:

Але воно поки що зовсім не працює.

Тепер нам треба змусити розширення зберігати налаштування. Для простоти скористаємосяJQuery. Скачаємо його та скопіюємо в папку js. Також створимо в папціjs файлoptions.js :

Copy Source Copy HTML

  1. $( function( )
  2. //функція встановлення значень полів згідно з збереженими опціями в localStorage
  3. var restore_options = function()
  4. var name = $(this).attr('name');
  5. if ( localStorage[name] !== undefined )
  6. $( this ).val( localStorage[name] );
  7. >
  8. else
  9. localStorage[name] = $( this ).val()
  10. >
  11. >;
  12. //встановлюємо значення полів (інпетів та селектів)
  13. $( "input[type!=submit]" ).each( restore_options);
  14. $( "select" ).each( restore_options );
  15. //функція збереження значень полів у localStorage
  16. var save_options = function()
  17. var name = $(this).attr('name');
  18. localStorage[name] = $(this ).val();
  19. >;
  20. //на кліку на сабміт зберігаємо поля і виводимо вікно з повідомленням OK
  21. $( "#save" ).click( function( )
  22. $( "input[type!=submit]" ).each( save_options );
  23. $( "select" ).each( save_options );
  24. alert("ok");
  25. >);
  26. >);

Тепер ми повинні підключитиJQuery таoptions.js до нашої сторінки налаштувань.

Додамо до секції файлуoptins.html наступні рядки:

Copy Source Copy HTML

  1. script type="text/javascript" src="js/jquery.js" > script >
  2. script type="text/javascript" src="js/options.js" > script >

Отже. Ми зробили своє власне розширення для Google Chrome. Зробили для нього гарну сторінку налаштувань. Але поки що воно жодної корисної інформації нам не надає. Потрібно це виправити! Але це у другій частині статті.

Коментарі

> Додамо до секції файлу optins.html

Пропустили в коді "options_page": "options.html" // Сторінка налаштувань

кома тут не потрібна, і Chrom на неї лається

Так, Олеже, в html є з'їдені теги. Вибачаюсь за недоробку. Парсер їх з'їв.

Те, що файли в UTF-8 кодуванні - це апріорі.

Взагалі щодо недоробок коду, який представлений у тексті статті, сильно вибачаюсь. Якщо потрібно 100% робочий код, скачайте його наприкінці другої частини статті. Там все одним архівом і протестовано.