03 Август 2008
В Opera 8 введена новая возможность, которая называется «Пользовательские файлы JavaScript». Пользовательские файлы JavaScript позволяют добавлять, удалять, исправлять, или отменять некоторые особенности сайтов. Короче говоре, пользовательские файлы JavaScript позволяют браузеру Opera работать с большим количеством сайтов, даже если вы не знаете, как писать JavaScript.
Возможно, вы помните, что в День 5 мы говорили о различных параметрах JavaScript в Opera, и было там нечто под названием «Пользовательские JavaScript», и я обещал, что про эту материю мы поговорим позже. В моих словах звучала истина, и сегодня я собираюсь поговорить об этой особенности Opera 8.
Также, возможно, вы помните, что прошлые несколько дней мы находились в непосредственной близости от убеждения того, что Opera может иметь доступ ко всей всемирной сети. Сначала мы говорили о технологии подгонки ширины страниц к ширине окна браузера, которая является простым способом заставить нормально отображаться некорректные сайты. А вчера мы говорили о файле ua.ini, который позволяет сменить идентификацию Opera, тем самым, позволяя отображать ещё больше сайтов.
Но что, если этого недостаточно? Что, если сайт предлагает некоторые действительно крутые функциональные возможности, но которые, кажется, не работают? Или что, если разработчик сайта намеренно блокирует Opera?
Вы можете попробовать отключить JavaScript, нажав клавишу F12. Но сейчас на многих сайтах требуется включение JavaScript. Что же тогда делать?
Ответ — использовать пользовательские файлы JavaScript. Если вы помните наш разговор о пользовательских таблицах стилей, то вы уже знакомы с понятием замены того, что придумал автор сайта на то, что нужно вам. Пользовательские JavaScript работают точно так же. Они заменяют или добавляют доступные на сайте функции.
Где узнать подробности о пользовательских файлах JavaScript?
Ваш скромный автор тоже не является специалистом в области JavaScript. Фактически я только ещё пытаюсь понять эту особенность Opera. Самое лучшее, что я могу сейчас сделать — оставить открытыми комментарии для добавления информации другими пользователями, и показать примеры использования пользовательских файлов JavaScript на существующих сайтах:
- http://www.opera.com/support/tutorials/userjs/
Официальное руководство Opera по использованию пользовательских файлов JavaScript - http://people.opera.com/rijk/opera/userjs.html
Страница Rijk, которая содержит примеры и коллекцию пользовательских файлов JavaScript. - http://virtuelvis.com/archives/javascript/index
Коллекция советов о JavaScript от Arve Bersvendsen. Arve также является владельцем сайта UserJS.org - http://nontroppo.org/wiki/UserJS
Раздел энциклопедии Opera и много хороших ссылок на страницы с информацией о пользовательских файлах JavaScript. - http://www.howtocreate.co.uk/operaStuff/userJavaScript.html
Пользовательские JavaScript в HowToCreate, включая очень хорошие примеры. - http://www.scss.com.au/family/andrew/opera/userjs/
Страницы с пользовательскими файлами JavaScript от Andrew Gregory.
Пользовательские JavaScript Opera подобны расширению Greasemonkey для Firefox, и множество сценариев Greasemonkey работает и в Opera, но есть и отличия, о которых стоит упомянуть. И, прежде чем я начну получать комментарии о том, что Firefox это придумал первый, я соглашусь, что действительно расширение для Firefox публично было доступно раньше. Однако, в отличие от некоторых людей, вы не увидите, что Opera пытается притвориться, что они изобрели абсолютно всё.
Примеры пользовательских файлов JavaScript
Следующие примеры приведены автором Lee Harvey, имя которого вам может быть знакомо, если вы следите за телеконференциями Opera.
Вместо предоставления спецификаций или справочных руководств, мы сосредоточимся на некоторых функциональных примерах.
Быстрая проверка
Для нашего первого примера, мы создадим пользовательский файл JavaScript, который обновляет строку состояния Opera.
- С помощью вашего любимого текстового редактора создайте новый текстовый файл, назовите его status.js, и поместите в папку с пользовательскими файлами JavaScript.
- Затем добавьте следующий код в файл status.js:
window.status = "User JavaScript is enabled";
Эта строка кода вынудит в строке состояния Opera отображать надпись «User JavaScript is enabled» — это может быть полезно в отладочных целях.
Примечание: в данном примере не проверяется адрес страницы, поэтому этот код будет применяться ко всем страницам, открываемым в Opera, кроме безопасных страниц (с протоколом https), и кроме страниц браузера Opera (с протоколом opera). И поскольку window.status устанавливается в начале загрузки страницы, он легко может перезаписываться последующими window.status.
Shockwave.com
Сайт Shockwave.com предоставляет хороший выбор игр, созданных для проигрывателя Macromedia Shockwave. Но чтобы запустить эти игры нам надо установить подключаемый модуль Shockwave: http://sdc.shockwave.com/shockwave/download/download.cgi
К сожалению, сценарий, используемый на Shockwave.com плохо работает с подключаемым модулем для Opera. Но мы можем исправить это недоразумение!
- С помощью вашего любимого текстового редактора создайте новый текстовый файл, назовите его shockwave.js, и поместите в папку с пользовательскими файлами JavaScript.
- Затем добавьте следующий код в файл shockwave.js:
if (location.hostname == "www.shockwave.com") {
document.addEventListener("load",
function() {
if (!game) return;
if (!game.url) return;
for (var i=0; i<document.links.length; i++) {
if (document.links[i].href != "javascript:play(game)") continue;
document.links[i].removeAttribute("onClick");
document.links[i].href = "javascript:window.open('http://www.shockwave.com/contentPlay/download/popup_downloadprompt.jsp?returnurl=" + escape(game.url) + "&id=" + game.keyword + "&width=" + game.winsize[0] + "&height=" + game.winsize[1] + "&site=" + game.site + "', 'asw_d" + (Math.floor(Math.random() * 100000)) + "', 'width=336, height=215');void(0);";
break;
}
},
false);
}
Примечания:
- Первая строка этого файла гарантирует то, что остальной код JavaScript будет применяться только к сайту www.shockwave.com
- Анонимно создаваемая функция — это обработчик события document.onload.
- Первые несколько строк анонимной функции проверяют существование игрового объекта и свойства game.url (созданного сайтом Shockwave.com).
- Если игровой объект найден, все ссылки текущего документа просматриваются, выискивая специальную оранжевую кнопку «Watch Film» с href: javascript:play(film)
- Если href найден, существующий обработчик события onclick удаляется из кнопки, и атрибут href устанавливается для открытия нового окна со всей подходящей информацией. К вашему сведению, эта информация была получена с http://www.shockwave.com/js/playfilm.js
Счастливого времяпрепровождения!
AtomFilms
Сайт AtomFilms.com предоставляет хороший архив короткометражных фильмов и анимации для проигрывателя Macromedia Shockwave. Поскольку сайт AtomFilms.com создан по мотивам Shockwave.com, исправление для Shockwave.com почти применимо и здесь!
- Снова с помощью вашего любимого текстового редактора создайте новый текстовый файл, назовите его atomfilms.js, и поместите в папку с пользовательскими файлами JavaScript.
- Затем добавьте следующий код в файл atomfilms.js:
if (location.hostname == "www.atomfilms.com") {
document.addEventListener("load",
function() {
if (!film) return;
if (!film.url) return;
for (var i=0; i<document.links.length; i++) {
if (document.links[i].href != "javascript:play(film)") continue;
document.links[i].removeAttribute("onClick");
document.links[i].href = "javascript:window.open('http://www.atomfilms.com/contentPlay/download/popup_downloadprompt.jsp?returnurl=" + escape(film.url) + "&id=" + film.keyword + "&width=" + film.winsize[0] + "&height=" + film.winsize[1] + "&site=" + film.site + "', 'asw_d" + (Math.floor(Math.random() * 100000)) + "', 'width=336, height=215');void(0);";
break;
}
},
false);
}
Примечания:
- Первая строка этого файла гарантирует то, что остальной код JavaScript будет применяться только к сайту www.atomfilms.com
- Анонимно создаваемая функция — это обработчик события document.onload.
- Первые несколько строк анонимной функции проверяют существование объекта фильма и свойства film.url (созданного сайтом AtomFilms).
- Если объект найден, все ссылки текущего документа просматриваются, выискивая специальную оранжевую кнопку «Watch Film» с href: javascript:play(film)
- Если href найден, существующий обработчик события onclick удаляется из кнопки, и атрибут href устанавливается для открытия нового окна со всей подходящей информацией. К вашему сведению, эта информация была получена с //www.atomfilms.com/js/playfilm.js
Заготавливайте побольше воздушной кукурузы и наслаждайтесь просмотром!
Предостережения
При создании пользовательских файлов JavaScript помните следующее:
- Пользовательские файлы JavaScript не загружаются на безопасных страницах (по протоколу https).
- Пользовательские файлы JavaScript не загружаются на страницах браузера Opera (по протоколу opera).
- Сайты могут изменить свой код в любое время. Также, ваши файлы JavaScript могут входить в конфликт с другими зависимостями. В качестве хорошей практики программирования проверьте существование объектов, функций, и переменных перед использованием файлов.
- Не забудьте включить некоторые условные утверждения или директивы @include/@exclude вверху файла JavaScript для гарантии того, что файл будет работать только с определёнными сайтами, папками, или страницами. В противном случае слишком много файлов JavaScript могут воздействовать на загружаемую страницу.
- Если вы хотите использовать не ASCII символы в файлах JavaScript, то попробуйте в блоке <script> для атрибута src="" указать ссылку на внешний файл JavaScript, и не забудьте включить атрибут charset="" в блок <script>. В противном случае используйте сущности HTML, или подчиняйтесь кодированию исходной страницы.
« День 9: Файл ua.ini или идентификация Opera | День 11: Почта в Opera (M2) »
Последнее обновление: 23.08.2008 08:14

