Как известно, пользовательские скрипты (далее просто "скрипты" или "UserJS") применяются для изменения и дополнения содержимого веб-страниц необходимыми функциями.
Ниже, в алфавитном порядке, приведены описания свыше 70 наиболее известных скриптов для браузера Opera.
Напомню, что для установки UserJS достаточно скопировать файл в вашу папку UserJS. Если её ещё нет, то создайте папку (например, Opera\userjs) и укажите её в меню Настройки→Дополнительно→Содержимое→Настройки Javascript.
Нужно отметить, что если вы до этого изменяли "Настройки для сайта", то скрипты на этих сайтах могут не заработать и потребуется правка override.ini.
Также следует заметить, что в Opera 9.5+ несколько изменена работа со скриптами, точнее исправлен баг с неверным считыванием интернациональных символов. И соответственно, скрипты содержащие такие символы, следует пересохранить в кодировке UTF-8, без BOM.
a-lib-stacktrace.js и a-lib-xmlhttp-cd.js - Реализация кросс-доменного XMLHttpRequest для Opera.
aagmfunctions.js - Эмулирует некоторые функции Greasemonkey. Используется для обеспечения лучшей совместимости со скриптами от FireFox.
allinbackground.js - Открывает ссылки в фоне по Ctrl+Click.
allow-ini-variables.js - Позволяет использовать внутренние переменные Opera (%c, %t) в JavaScript-е.
alt2title.js - Если не задан тэг Title, то копирует в него содержимое тэга Alt. Это нужно для "правильного" отображения тэга Alt в качестве всплывающей подсказки у картинок, как это делает IE. (let-me-see-img.js обычно лучше)
autocopy.js - Копирует выделенный текст с форматированием в буфер обмена. Только для Windows.
autosizer.js - Подгоняет размер изображений открытых на отдельной странице. Включает режимы "Original", "Shrink to Fit", "Maximize", "Fit to Width" и "Fit to Height". Обновлённая версия здесь. А здесь версия для Opera 9.5.
bbcode.js - Вставляет в форму ответа любые BBCode и HTML тэги.
block-external-scripts.js - Блокирует загрузку скриптов с других доменов. Это убирает рекламу реализованную на js, например, Google AdSense или "всплывающие окна v2.0", наподобие этого.
blockexternal.js - Блокирует скрипты, картинки, фрэймы и флэшки с других доменов. В большинстве случаев это реклама. Имеется белый список.
block_external.js - Более продвинутая вариация на ту же тему от Mikivanch. Кроме прочего, позволяет блокировать картинки по размеру. Не блокирует скрипты.
BlockIt.js - Блокер скриптов. Реализует часть функций расширения NoScript для FireFox.
bug-me-not.js - Используя сервис BugMeNot.com ищет логины и пароли для сайтов требующих аутентификации. Вызывается по Ctrl+Shift+Double Click. Версия для Opera 10 есть здесь.
convert2phf.js - Сохраняет страницу в phf или mht. Страница сохраняется со всеми изменениями сделанными с помощью javascript.
coolirisalike.js - При зажатии Ctrl и наведении курсора мышки на ссылку, показывает окно предпросмотра. (попытка реализовать аналог Firefox-ового расширения Cooliris Previews).
devConsole.js - Консоль разработчика. Для работы в качестве UserJS замените первую строчку «(function()» на «function ujs_devConsole()», а последнюю «})()» на«}» и используйте кнопку: Консоль разработчика.
disable-script.js - Блокирует все скрипты на сайтах, но позволяет использовать UserJS.
dlembed.js - Двойной клик по пустому месту страницы, добавит перед каждой флэшкой ссылку для её скачивания. Существует версия в виде кнопки.
DocumentViewer.js - Показ в браузере документов формата pdf, ppt, doc, xls используя веб-сервисы.
extra-download-links.js - Добавляет ссылки на картинки и флэш в боковую панель "Ссылки". Здесь более новая версия.
fix-content-type.js - Исправляет веб страницы, которые неправильно отдаются сервером как plain text (вместо HTML).
fix-gzipped-pages.js - Исправляет дважды сжатые gzip-ом страницы.
fix-long-title.js - Opera не может сохранить страницы со слишком длинным заголовком. Скрипт это исправляет.
FlashBlock.js - Флэшблокер для Opera 9. Аналог расширения Flashblock для Firefox. Отключить блокирование флэша на текущем сайте, можно с помощью хоткея Ctrl+Shift+F.
get-link-info.js - Выдаёт информацию о ссылке. А именно: размер, дату, контент тип. Достаточно глюкав и потребляет больше трафика чем отдельные утилиты. Настоятельно рекомендуется применить фикс.
google-translate - Перевод текста, в том числе выделенного и в форме ответа, с помощью Google Translate.
google-translation with tooltip - Вариация на ту же тему от Ayush, ориентированная на перевод отдельных слов.
hide-objects.js - Скрывает флэш на страницах. Разблокировка двойным кликом. (Flash-блокер лучше).
hide-js-popups.js - Скрывает плавающие окна созданные с помощью javascript.
highlighter.js - Подсвечивание результатов поиска. В том числе в Google и с использованием регулярных выражений.
HighlightText.js - При нажатии на кнопку, изменяет цвет текущего выделения на жёлтый и запоминает это в кукисах. Аналог расширения Line Marker для FireFox.
image_reloader_for_opera.js - Подгрузка изображений по Ctrl+Click или зажатию левой кнопки мыши. Версия для Opera 9.5.
keyboard.userjs.js - Виртуальная клавиатура, которая добавляется к тестовым полям на странице.
let-me-see-img.js - На месте невидимых незагруженных изображений показывает рамку. Кроме того, укорачивает слишком длинные надписи на месте изображений и копирует содержимое тега alt в title.
link-alert.js - Рядом со ссылками показывает иконки зависящие от того куда они ведут. Достаточно глюкав. Лучше использовать links-with-icons.css.
linkifier.js - Делает кликабельными текстовые ссылки. Могут быть проблемы со скоростью.
linkify-txt.js - Делает кликабельными ссылки в текстовых файлах.
logger.js - Записывает в файл историю посещённых страниц. Нужна Java.
middleclickJSOverride.js - Обеспечивает правильную работу, в случае клика колёсиком по javascript-ссылке.
mouse-gesture-track.js - Служит для визуализации мышиных жестов. Должна стоять галочка "Позволить контролировать правую кнопку мыши". Версия для старых версий Opera находится здесь. А вариант использующий canvas здесь.
multipopup.js - Красивые полупрозрачные подсказки с дополнительными возможностями. Не забудьте отключить встроенные. Достаточно конфликтен.
no_meta_redirect.js - Отключает meta-редирект.
noclicktoactivate.js - Избавляет от необходимости дважды кликать на флэшку. Версия для Opera 9.5 здесь.
open-in-background-with-long-press.js - Открывает новую вкладку в фоне при зажатии ссылки на пол секунды.
open-in-new-window.js - Заставляет все ссылки открываться на новой странице. Работает только на сайтах указанных в начале скрипта.
open_browser.js - Открывает указанные сайты в заданном браузере. Только для Windows.
ospell.js - Онлайн проверка орфографии в форме ответа. Для включения русского, поставьте: «ENGINE: 1» и «defaultLang: 'ru'».
pdfHandler.js - Избавляет от пустой страницы при открытии файлов *.pdf, *.doc и *.xls.
Remove_it_permanently-for_Opera.js - Удаляет "кликнутый" элемент страницы. Насовсем. Только для Windows.
removeblank.user.js - Удаляет все атрибуты «target="_blank"», которые вызывают открытие ссылки на новой странице.
robosticky.js - "Клейкие записки" на страницах.
safe-alert.js - Позволяет остановить появление alert-ов на странице.
scroller.js - Даёт возможность скроллить страницу, зажав Ctrl и левую кнопку и передвигая мышь.
seobar3.js - Инструмент для специалистов по продвижению веб-сайтов. Для открытой в браузере страницы SEObar может отображать следующую информацию: Alexa Traffic Rank, Google Page Rank, Тематический индекс цитирования Яндекса.
show-ip.js - Показывает в нижней части страницы, IP текущего сайта (для чего нужна Java) и ваш собственный.
Smilize.user.js - Преобразует текстовые смайлики (например, :), :-), :d, и т.д.) в анимированные графические. Требует aagmfunctions.js.
snap-links.js - Позволяет открыть сразу много ссылок, просто обведя их.
snap-images_userjs.js - Позволяет открыть несколько изображений, обведя их.
text-replacement.js - Заменяет заданный текст на всех страницах.
titleprotector.js - Не позволяет страницам менять заголовок окна браузера с помощью JavaScript.
xerath-plugsome-toolbar.js - Показывает возле каждой флэшки панельку с кнопками Reload, Save, Play и Pause. Две последних работают не везде.
xerath-power-drag.js - Позволяет изменять размер textarea (формы ответа) и изображений с помощью мышки.
xml-tree.user.js - Показывает XML файлы в виде дерева и с подсветкой синтаксиса.
zoom-image.user.js - Позволяет уменьшать и увеличивать отдельные изображения.
zz-spoof-id.js - При выборе в браузере маскировки под IE или Firefox, обеспечивает полную маскировку и для javascript, убирая window.opera и создавая некоторые специфичные для этих браузеров свойства. Существует дополнительный скрипт для Opera 9.5+, который эмулирует эту особенность IE, нужную на некоторых сайтах.
Сайт специфичные скрипты
adfind.js - Скрипт дополняет поиск в Google, другими поисковыми системами - как это делается в Яндексе или МЕТЕ.
ExpertsExchangeFilter.user.js - Этот скрипт очищает experts-exchange.com от предложений заплатить за просмотр ;-) и показывает весь контент.
ikariam.js - Скрипты для игры Ikariam.
lj_unfolder.user.js - А этот скрипт добавляет в ЖЖ, возможность подгружать комментарии из длинных тредов прямо в страницу.
rapidshare_com.js и другие - Упрощают скачивание с файлообменников.
vkopt.js - Скрипты для vkontakte.ru.
youtube_com.js и другие - Скрипты для упрощения скачивания флэш-видео.
zaycev_net.js и другие - Ну а эти скрипты позволяют легче скачивать музыку.
Микро-faq для разработчиков
Q: Что из себя представляет userjs?
A: Это обычный javascript, выполняемый на каждой странице (впрочем, это настраиваемо) и в её контексте. Из последнего следует, что вам следует избегать создания глобальных переменных и функций, которые могут конфликтовать с имеющимися на странице (обычным решением является использование анонимной функции). Кроме того, userjs способны использовать несколько функций из объекта window.opera, недоступных обычным скриптам и предназначенных, в основном, для исправления ошибок на веб-страницах. Познакомиться с некоторыми тонкостями написания userjs, можно на userjs.org.
A: Это обычный javascript, выполняемый на каждой странице (впрочем, это настраиваемо) и в её контексте. Из последнего следует, что вам следует избегать создания глобальных переменных и функций, которые могут конфликтовать с имеющимися на странице (обычным решением является использование анонимной функции). Кроме того, userjs способны использовать несколько функций из объекта window.opera, недоступных обычным скриптам и предназначенных, в основном, для исправления ошибок на веб-страницах. Познакомиться с некоторыми тонкостями написания userjs, можно на userjs.org.
Q: В какой момент он запускается?
A: Перед первым скриптом на странице, а при отсутствии скриптов аналогично "DOMContentLoaded", т.е. после загрузки самой страницы (только страницы, без изображений и т.п.). Учитывая, что скрипты обычно присутствуют уже в "<head>", в большинстве случаев userjs будет запускаться ещё до загрузки "<body>". Так что если вам нужна работа с DOM, потребуется использовать document.addEventListener('DOMContentLoaded', function(){...}, false).
A: Перед первым скриптом на странице, а при отсутствии скриптов аналогично "DOMContentLoaded", т.е. после загрузки самой страницы (только страницы, без изображений и т.п.). Учитывая, что скрипты обычно присутствуют уже в "<head>", в большинстве случаев userjs будет запускаться ещё до загрузки "<body>". Так что если вам нужна работа с DOM, потребуется использовать document.addEventListener('DOMContentLoaded', function(){...}, false).
Q: Как в userjs получить информацию с другого домена?
A: Используйте cross-document-messaging. В качестве простого примера см. show-ip.js.
A: Используйте cross-document-messaging. В качестве простого примера см. show-ip.js.
Q: Почему userjs не работают на https?
A: Из соображений безопасности. Но вы можете включить это здесь.
A: Из соображений безопасности. Но вы можете включить это здесь.
Некоторые баги:
«window.getSelection()» - Теряются переносы строк. Используйте «document.getSelection()» или посмотрите как обойдён этот баг в quick-reply.js.
«window.getSelection().containsNode()» - Всегда false.
«document.selection.type» - «None», даже если существует выделение. Opera 9.5+.
«window.getSelection().containsNode()» - Всегда false.
«document.selection.type» - «None», даже если существует выделение. Opera 9.5+.
«mousedown» - Перестаёт работать драг-н-дроп на странице. Используйте вместо него «BeforeEvent.mousedown».
© А. Рузанов, 16.03.2008 (обновлено 27.03.2009)