Pull to refresh
74
0
Алексей Мигутский @MrMig

Senior Software Development Engineer

Send message
Это не совсем юзерскрипт, а скорее аналог прокси-инъекции, инъекция скрипта через букмарклет :)

Минус в том, что скрипт надо запускать руками. А какие плюсы, кроме как отсутствие ограничений окружения?

Насколько я знаю — не может.

Есть скрипты, в которых гифка преобразуется в data:uri, и в ней подменяются байты, отвечающие за скорость анимации.
Я не проверял, работает ли такой подход, и не знаю, насколько он оправдан.
Тут вы, конечно же, правы. Данный кусок кода будет работать.
К тому же, его можно переписать как
window.unsafeWindow = window.unsafeWindow || window;

В этом случае у нас будет объект unsafeWindow, привычный разработчикам под GreaseMonkey :)

Но я считаю, что это дело вкуса.
Условности окружения.

Юзерскрипты в GreaseMonkey запускаются в песочнице, где unsafeWindow определено изначально.
В Google Chrome юзерскрипты запускаются в замыкании, в котором есть параметр unsafeWindow, но как показала практика он не несёт особого смысла.
В Opera переменной unsafeWindow не существует — ссылка не определена. Интерпретатор выдаст
Undefined variable: unsafeWindow
.

Вы можете проверить это сами, создайте юзерскрипт со следующим содержанием и проверьте его исполнение в опера (заодно посмотрите, через какую ж как неудобно в опере устанавливать юзерскрипты):
// ==UserScript==
// @name SugarTest 
// @author Me
// @license none
// @version 1.0
// @include http://habrahabr.ru/
// ==/UserScript==
(function(window, undefined ) {
var w = unsafeWindow || window;
 alert(w);
})(window);


После установки скрипта зайдите на хабр и посмотрите в консоль ошибок (Shift+Ctrl+O).
Возможно, я вас удивлю, но ваш способ не будет работать как минимум в Opera.
Правильным является вариант, указанный в шаблоне.
Обычно одним из немаловажных плюсов юзерскриптов является наличие «правильного» User-Agent.
Это делает запросы скрипта «неотличимыми» от запросов, сделанных пользователем.

Вообще, используя юзерскрипты удобно писать ботов для различных сайтов.
При правильном подходе можно добиться того, что бота можно вычислить только по нечеловеческому поведению (у среднестатистического бота просматривается чёткий паттерн поведения, отличный от человеческого).
На самом деле это хорошая идея — использовать TamperMonkey.

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

Предположим, у вас есть сайт. И на этом сайте вы активно пропогандируете некий полезнейший скрипт.
Как показывает статистика, только 10% пользователей, посетивших вашу целевую страницу, установят скрипт.

Проблем несколько, но самых важных, на мой взгляд, две:
1. Пользователи не доверяют «непонятным» скриптам и программам.
2. Пользователи не умеют устанавливать скрипты в свои браузеры.

Если первую проблему решить в локальном масштабе довольно сложно, то вторая проблема может быть уменьшена следующими способами:
1. Пакуем скрипт в расширение и добавляем на официальные страницы расширений. (Этот способ я лично не проверял, но отзывы слышал очень лестные.)
2. Уменьшаем число необходимых расширений для запуска скрипта. (Этот способ даёт около +5% установок пользователями Google Chrome).

Статистические данные анализировались на нескольких средних проектов (до 5000 пользователей юзерскриптов).
Спасибо, ссылка на компилятор есть в статье.

Простой способ упаковывания юзерскриптов в расширения для хрома я обещаю осветить в следующей статье (шаблон опять одинаковый и может быть использован во всех последующих юзерскриптах).
Если вы «не бум-бум» в JS, то самое время начать его изучать. Как показал мой небогатый опыт, человек, не знакомый с javascript и программированием (нулевой уровень), может освоить javascript и написание юзерскриптов за пол года.

Если у вас есть знакомый javascript-порграммист (или веб-программист в общем случае), начните осаждать его вопросами (в умеренном количестве). Любой грамотный программист поможет вам советом.

Если такого знакомого нет — начните с форумов. На userscripts.org на самом деле отзывчивый и дружелюбный к новичкам форум. Одна проблема — он на английском.
Русскоязычных аналогов мне, к сожалению, не известно.

Что касается «конструктора», то рецепт для «непрограммистов» есть в статье.

Вам осталось найти адекватного программиста, который «вправит вам мозги» и направит на путь постижения javascript :)
От юзерскрипта до расширения в некоторых случая «рукой подать».

У меня зреет статья с чуть более глубоким описанием кроссбраузерной разработки юзерскриптов. В ней я опишу конкретные проблемы, которые встречаются в каждом браузере.

Так вот, для того, чтобы решить большую часть «продвинутых» проблем (к примеру, не доступный document.frames[i].parent) в Google Chrome, скрипт приходится упаковывать в простейшее расширение.

Спасибо за наводку на Kango, я этот фреймворк как-то упустил. Потестирую на новых проектах.
12 ...
8

Information

Rating
Does not participate
Location
Berlin, Berlin, Германия
Date of birth
Registered
Activity