четверг, 17 мая 2012 г.

!Поделиться,

Итак начнем с простого пользовательского скрипта, но имеющего новое и отличное от всех до этого разных Рюшечек. А именно - я применяю новые команды-функции и возможности и делаю на до боли известной конструкции - это установка блока "Поделится" на любую страницу в инете.

Используется конструкция от Яндекса - «Поделиться», но не совсем обычным для этого применения способом.

Сначала расширением Scriptish - мы втянем сам скрипт в наш браузер, и тем самым в будущем мы будем его грузить не из инета, а из компьютера, а потом пунктом в меню синтезируется строчка с иконками для доступа к инструментам социальных сетей.

Блок мета-даных имеет вид

// ==UserScript==
// @id             all@alex.zest
// @name           all-blog
// @version        1.0
// @namespace      http://cargan.cervera.ru/yaru
// @author         Alex Zest
// @description    Общие функции и меню
// @include        *
// @require        http://yandex.st/share/share.js
// @resource    ic http://yandex.st/share/static/b-share-icon.png
// @run-at         document-end
// ==/UserScript==

Основные ключи понятны, и только некоторые ключи нуждаются в пояснении:

  • ключ @include * говорит расширению, что данный скрипт используется везде,
  • а фраза @require http://yandex.st/share/share.js указывает расширению о загрузке извне необходимого для работы скрипта.
  • *1 для ускорения загрузки и исполнении скрипта введено допонительное улучшение, а именно// @resource ic http://yandex.st/share/static/b-share-icon.png - теперь фооновое изображение всех значков так же загружено во внутренне хранилище Scriptish

И далее непосредственно с помощью функции регистратора загружаем нам необходимый контент в пункт меню.

GM_registerMenuCommand("Поделиться",
function(){
var s = document.createElement('script');
s.type='text/javascript';
s.src='//yandex.st/share/share.js';
document.body.appendChild(s);

s = document.createElement('mark');
s.setAttribute('id','sh');
s.className = 'yashare-auto-init';
s.setAttribute('data-yashareType','none');
s.setAttribute('data-yashareQuickServices',
'yaru,lj,facebook,twitter,'+
'gplus,blogger,yazakladki');
document.body.appendChild(s);
});

В отличии от варианта предложенный Яндексом, я не использую кнопку 'поделится', и вместо div использую тег mark, причем вся конструкция жестко фиксируется в нижнем правом углу окна и не зависимо от скрола видна постоянно и все стили данного сктиптиша размещены в специальном стиле, который вставляется через расширение Stylish

#sh {
position:fixed;
right:5px; bottom:5px;
padding:2px;
z-index:10000 }

Так же дополнительно был вставлен пункт меню - "Новый UIID", чтобы если потребуется оперативно - всегда был под рукой.

GM_registerMenuCommand(
"Новый UIID", function(){
alert(GM_generateUUID()) ;
}) ;
*1 - улучшения сделаные позже