Pull to refresh

Как я делал свое первое расшырение на Chrome

Reading time3 min
Views659
Добрый день.
Сегодня я расскажу как я делал расшырение на Chrome.
Суть расшырения:
Вертикальная панель слева на каждом сайте чтоб прокрутиться вверх, как в вк, при повторном клике снова вниз.

manifest.json
{
  "manifest_version": 2,
  "name": "__MSG_extName__",
  "short_name": "__MSG_extShortName__",
  "description": "__MSG_extDescription__",
  "author": "__MSG_author__",
  "version": "1.0",
  "default_locale": "uk", //Стандартная локализация
  "homepage_url": "http://blastorq.url.ph/",
  "icons": {
    "256": "img/icon-256.png" //Иконка
  },
  "browser_action": {
    "default_icon": "img/icon-256.png" //Еще иконка
  },
  "background": {
    "scripts": ["js/script.js"], //Фоновый скрипт
    "css": ["css/style.css"] //Фоновый стиль
  },
  "permissions": ["tabs", "<all_urls>"], //Права
  "content_scripts": [
    {
      "matches": ["<all_urls>"], //На всех страницах
      "js": ["js/script.js"], //Скрипт
      "css": ["css/style.css"], //Стиль
      "run_at": "document_end", //Когда запускать
      "all_frames": false //Только на страницах - не в фреймах
    }
  ],

"web_accessible_resources": ["img/*"] //Разрешаем доступ к картинкам
}

Локализация — messages.json
{
 "extName": {"message": "Fast Scroller"},
 "extShortName": {"message": "FS"},
 "author": {"message": "Давид Манжула, Blast.ORQ"},
 "extDescription": {"message": "Расширение для людей, которые деградировали настолько, что кликают по левой половине любого сайта чтобы прокрутиться вверх, как в вк."}
}

script.js
var $FC_script_code = "if(document.body.scrollTop==0){document.body.scrollTop=$FC_count;document.getElementById('FC_img').src='"+chrome.extension.getURL("img/arrow-top.png")+"';}else{$FC_count=document.body.scrollTop;document.body.scrollTop=0;document.getElementById('FC_img').src='"+chrome.extension.getURL("img/arrow-bottom.png")+"';}";
var $FC_container = document.createElement('div');
$FC_container.innerHTML = '<div class="FC_div" onclick="'+$FC_script_code+'"><img src=""img/arrow-top.png")+'" id="FC_img"></div>';
document.body.appendChild($FC_container.firstChild);
var $FC_count='1';

Здесь всё просто: $FC_script_code — код скрипта который приклеиться к onclick в панели.
chrome.extension.getURL(«img/arrow-bottom.png») — функцыя, которая вертает url файла, например chrome-extension://plmmlbfmkplbpcblnhbkcngihlagopoo/img/arrow-bottom.png.

Потом создаем div, приклеиваем его к телу документа через appendChild.
Правда, я пробовал через innerHTML, но тогда вк не работал.

Разсмотрим сам код при клике.
if(document.body.scrollTop==0){ //если страница не прокручена...
	document.body.scrollTop=$FC_count; //Скролим вниз, к $FC_count.
	document.getElementById('FC_img').src='[стрелка-вверх]'; //Меняем картинку на стрелку-вверх(через chrome.extension.getURL).
}else{ //В остальных случаях...
	$FC_count=document.body.scrollTop; //Записываем на сколько была прокручена страница в $FC_count.
	document.body.scrollTop=0; //Скролим вверх
	document.getElementById('FC_img').src='[стрелка-вниз]'; //Меняем картинку.
}

Ну, и style.css
.FC_div{
	width: 32px; 
	height: 100%; 
	left:0px;
	top:0px; 
	position:fixed; 
	background:rgba(0, 0, 0, 0.1); 
	z-index:2147483647;  
	-webkit-transition-duration: 1.5s; 
	-o-transition-duration: 1.5s; 
	-moz-transition-duration: 1.5s; 
	transition-duration: 1.5s;
	-webkit-user-select:  none;
	-ms-user-select:  none;
	-moz-user-select:  none;
	cursor: pointer;
}
.FC_div:hover{
	background:rgba(0, 0, 0, 0.5);
	width: 48px; 
} 
.FC_div img{
	left:0px;
	position:absolute;
	bottom:64px;
	width:100%;
}




Просто полоска:

image

При наведении курсора:

image

В версии 2 думаю добавить возможность отключать полоску на отдельних сайтах, менять цвета и т.п.

Ссылка на официальную страницу расширения http://blastorq.url.ph/site/chrome-ext/fs.
Извините что на Украинском.
В Хром-маркете не выложыл ибо сейчас доллар дорогой.
Код на Google Drive: drive.google.com/open?id=0B_H2xOJM6CeBbkdvVTJqVVFzTDQ&authuser=0
Only registered users can participate in poll. Log in, please.
Как вам?
13.33% +2
46.67% -7
40% ±6
15 users voted. 8 users abstained.
Tags:
Hubs:
Total votes 1: ↑0 and ↓1-1
Comments4

Articles