Как стать автором
Обновить

Комментарии 40

Фильм, часть седьмая —
Здесь можно поесть,
Потому что я не видал
Предыдущие шесть
© Высоцкий

Это я к тому, что было бы неплохо ссылки на другие части сделать :)
Сделал во всех статьях ссылки на другие части.

Успел запутаться и заморочиться. Мне кажется, хабр должен как-то поддерживать написание серии статей и самостоятельно проставлять ссылки.
Если бы где-то сверху было бы написано почему я должен отказаться от jquery и начать пользоваться libretki, то было бы в три раза интереснее читать. :)
Это не может быть написано, потому что jquery c libretki выполняют назные задачи.
Ага. Разобрался. В три ночи мозги совсем не соображают.
Злые какие-то все. Ну не разобрался, карму-то за что?
Не знаю, дойдут ли руки до попробовать, но это очень крутая штука! Очень хороший инструмент для плагинов.

Спасибо!
Спасибо, отличная идея систематизировать наработки в одну либу что-бы предостеречь от дальнейшего велосипедостроительства.
я пишу довольно много userjs: blog.arty.name/tag/userjs/, и вначале обрадовался такой серии статей. Впрочем, энтузиазм угас уже ко второй из них. Первый минус, имхо — неравномерность. Конечно, я не знаю, какая целевая аудитория у серии, но первая статья кажется очень поверхностной, а в следующих автор закапывается в узкоспецифичные подробности. Второй минус — чрезмерная сложность затеи (опять же, это субъективно). Мои скрипты действуют автономно и никак друг с другом не связаны, им не нужно предлагаемое общее хранилище. Сохранять данные, конечно, бывает удобно, и хак 0.0.0.0 меня впечатлил: ) Но мои скрипты ещё и кроссбраузерные, поэтому заточенность только под оперу огорчает, равно как и ограниченность кук. И третий субъективный недостаток — ява. Нету у меня желания поднимать этого монстра каждый раз, хотя, спору нет, интерфейса управления юзерскриптами опере не хватает.

в общем, мне кажется, что лучше никак, чем так, хотя свои поклонники у библиотеки могут найтись
Здесь все просто — если скрипты простые, то им libretki не нужен и это очень хорошо.

Но как только понадобится то же самое общее хранилище, то окажется, что в скрипт на 10 строк нужно добавить ещё 300 только для него. И во второй тоже, и в третий. А потом внести во все исправления. И не забыть про всякие защиты. Вот тут и появится вопрос «а как выделить это в библиотеку?». Так и случилось в моем случае. Может кому пригодится.
Сложность тут вынужденная. Если кто подскажет, как сделать проще — буду рад.

Насчет кроссбраузерности — в Firefox я бы не стал заниматься таким извратом, а написал бы расширение. Хотя в Firefox вроде и так все есть: и хранилище, и Cross-domain XMLHttpRequest, и доступ к файловой системе, и скрипты там от страницы изолированы. В-общем, все это не нужно.

А Java — это просто единственный способ добраться до буфера обмена и файлов. Хотя вру, есть ещё Flash, может и его как-нибудь прикручу. Устроит то же самое на Flash?

Итог сего повествования: Opera, даешь нормальные расширения!
как я понимаю, общее хранилище нужно тогда, когда код разбит на несколько файлов, я бы просто объединил их в один. Понятно, что поддерживать такое труднее для программиста, зато проще для потребителя

кроссбраузерность полезна в плане простоты поддержки кода: он будет один и тот же для разных браузеров

загрузка javavm имхо не стоит доступа к файлам и буферу обмена: лично мне буфер не был нужен вообще никогда, а файлы — единожды — как раз для интерфейса к скриптам. Флеш я тоже не люблю, но понимаю, что в этом со мной согласится меньшее число людей, чем в случае с явой
Насчёт общего хранилища понято неверно. Оно необходимо, когда нужно иметь доступ к одним и тем же данным с разных адресов. Даже если код весь в одном файле.

Про кроссбраузерность можно подумать. Тем более что в данном случае будет два варианта для браузеров и кроссбраузерность не будет ничего стоить (в плане размера и производительности кода). Но это не имеет смысла, пока единственный пользователь — это я :-)

Я так понимаю, что просто включение Java в настройках приводит только лишь к инициализации Java в момент запуска браузера и не отражается на времени загрузки страниц. То же самое с Flash. Если это так, то использование, например, буфера обмена тоже на времени загрузки страниц не отразится, обращение к Java производится непосредственно в момент использования буфера обмена.
я имел в виду общее для всех скриптов хранилище, а не для одного — на разных адресах

про яву у меня было ощущение, что она запускается только при обнаружении апплета, и это имхо разумно
вот, кстати, сейчас выходит opera unite, в которой есть File I/O, которого должно быть вполне достаточно: blog.arty.name/2009/addonyi-dlya-operyi/
File I/O доступен только виджетам.
виджет для управления юзерскриптами — достаточно хорошо; )
Все же включать/выключать скрипты нужно недостаточно часто, чтобы все время видеть их список на экране. Панель, по-моему, намного удобнее.

Да не в том вопрос, факт что File I/O скриптам не помощник.
виджет тоже может быть не всё время запущен

самим скриптам не помощник, а вот для добавления в оперу пары новых интерфейсов — очень даже: управление юзерскриптами и юзерстилями
Статью ещё не прочитал, но последние две недели ищу фреймворк, который помог бы писать user js. Очень рад тенденции. Жаль, что в браузерах user js-ы пока практически несовместимы.
да ладно, несовместимы! многие вещи отлично работают, говорю по личному опыту написания кроссбраузерных userjs
Ты смотришь глазами программиста. А я — пользователя. Про Хром я вообще не знаю, но в Опере и ФФ есть:

— свои разные встроенные фишки для джсов и разные режимы выполнения. Например, в Опере скрипты работают до загрузки документа — это даёт кучу возможностей, а что делать с ФФ?
— в ФФ можно менять опции через удобный интерфейс, в Опере нет. В итоге я скачиваю какой-нить ФФ-шный скрипт и, ставя его в оперу, роюсь внутри.

Короче, танцы с бубнами.
если не использовать фишки, то всё кроссбраузерно, это точно
Если не использовать фишки — то оно уже и не нужно особо :)

Та же задача из первого поста автора с отрубом рекламы — теряет смысл, если не выполнять скрипт до загрузки картинок и прочих объектов.
ну как сказать, не нужно. У меня вон сколько скриптов, которые вполне хорошо себя чувствуют, даже если выполняются только после загрузки. И для меня это полезные скрипты, да. Похоже, что не только для меня; )
А у меня все, что я задумал или сделал — они должны выполняться до полной загрузки. Вот пара примеров:
with.in/tag/userjs/

(зарелиженные скрипты сырые)
значит, именно для ваших идей фишки нужны. Но не нужно говорить, что они нужны вообще всем; )

вообще, конечно, было бы здорово доработать гризманки, чтобы он умел запускать скрипты по DOMContentLoaded
Я имел в виду, что обработка во время загрузки страницы и до загрузки внешних объектов — ооооочень актуальная история для пользовательских скриптов. В силу того, что их часто юзают, чтобы рубить лишнее.

И два — что покуда не будет возможности везде конфигурить через интерфейс, а не через блокнот, это останется гиковской погремушкой.
мы расходимся в оценках актуальности; )
хорошо, если так, но это расходится с моим опытом
wiki.greasespot.net/DOMContentLoaded:
The code in a Greasemonkey user script gets invoked when the DOMContentLoaded event fires. It is a DOM event implemented by Mozilla, similar to window.onload. However, since it waits only for the DOM to load, instead of the entire page (including images, style sheets, and etc.) it happens sooner.
Кул! А я думал, что в Грисманки под окончанием загрузки имеется в виду полная загрузка страницы с картинками.

Кстати, пытался написать тебе вопрос приватный, но я на бете Оперы сижу, в Хабре некоторые ссылки и кнопки работают через раз. Итак: как можно изменять объекты страницы прямо во время загрузки? Я добавляю к элементам списка (li) нумерацию, но список длинный, а номера очень критично видеть прямо во время загрузки.
Вопроса не понял. Пиши поподробнее в почту.
Я ж сказал — не могу, не нажимаются кнопки :) Скинь е-майл приватно — я туда отпишу.
> Например, в Опере скрипты работают до загрузки документа
Не совсем точно. Userjs загружаются перед первым скриптом на странице, а при отсутствии скриптов аналогично «DOMContentLoaded».

«До загрузки» скрипты исполняются, пожалуй только в хроме с выставленным флажком «run-at document-start».
Либреткам не хватает полезных содержательных примеров применения. Так что собираю заявки на скрипты. Приоритет по кол-ву плюсов.
> Анонсировал libretki на OperaFan, вроде сколько-то людей скачали, но ни одного отзыва не оставили.
Меня оно не впечатлило по следующим причинам:
1) Поиск ошибок в чужом коде занятие не слишком увлекательное. А ошибки там видны даже при беглом взгляде, например, в libretki.cookies.js (libretki.cookies.set(«lex»,1) -> libretki.cookies.set(«x»,2) -> alert(libretki.cookies.get('x')) )
2) Userjs-ки перечитываются при каждом обновлении страницы и куча скриптов скорость явно не увеличит.
3) Решения с Java чересчур костыльные. Если «advanced user», в принципе, способен поставить скрипт, то правка разрешений для java, это уже перебор.
1) Хех, виноват, взял код не глянув. Спасибо, исправлю. Кстати это, хотя и выглядит как недостаток, на самом деле достоинство: достаточно исправить баг в одном месте и один раз. А вот когда каждый скрипт тащит свой код для работы с cookies…
2) Несколько скриптов, которые все то же самое тянут каждый с собой, тоже скорости не прибавляют. Кстати, как бы поправильнее замерить влияние скриптов на скорость загрузки?
3) Java используется там, где другого варианта нет. Это не выбор «прямо»/«криво», это выбор «криво»/«никак». Framework полезен и без Java. Для пользователей скоро будет инсталлятор.
2) Ну можно же, например, объединить оба скрипта использующие java в один и добавить короткое описание объектов/функций в начале. И скриптов будет меньше и пользователям фреймворка удобней.

3) На момент выхода, ещё можно было использовать флэш для работы с буфером обмена. Стартует он намного быстрее жавы.

Да, кстати. По моему libretki ломают acid3.acidtests.org/
«Failed 2 tests.
Test 04 failed: expected '[object HTMLDivElement]' but got '[object HTMLDivElement]' — expectation 4 failed
Test 62 failed: expected 'buckets' but got '' — buckets: className wrong»

>не хватает полезных содержательных примеров применения
Превью картинок/ссылок?
my.opera.com/community/forums/topic.dml?id=200327 + my.opera.com/community/forums/topic.dml?id=251513
2) Ну можно вообще объединить все в один скрипт и прогнать через jsMin. Кстати, есть ли информация, Opera кэширует исходный текст скрипта или уже распарсенное дерево? Во втором случае кол-во и размер скриптов вообще имеют мало значения, так как выполняются они все равно по необходимости.

3) Попробую прикрутить. Есть вообще идея написать свой легкий плагин.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации