[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: jquery-плагин для стилизации прокрутки
Страницы: 1, 2, 3, 4
Invis1ble
bodja
это, конечно, круто. Я ж и не спорю :) Но это оффтоп.

Итак, мои 3 варианта отслеживания изменений в DOM:
1. Только ХАРДКОР!!1
setInterval(function () {
if (oldHeight != newHeight) {
// update
}
}
, 10);

Решение в лоб, эффективно на 146%, кроссбраузерно, просто и сердито.
Чем меньше интервал, тем более отзывчив интерфейс и больше нагрузка на браузер.

2. DOM level 2-3 mutation events
Элегантное решение, но далеко не кроссбраузерное. Не проверял, но пишут, что некоторые даже самые новые версии браузеров не поддерживают эти события или есть баги.

3. ХАРДКОР-2
Переопределяем все нативные методы браузера для работы с DOM на уровне прототипов, чтоб они извещали об изменениях в DOM'е.
Кроссбраузерно (по идее, не уверен), очень много кода (из-за различных реализаций javascript в разных браузерах). Предположительная эффективность - 100%


Any ideas ?

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

bodja
Invis1ble
Мое предложение
onreadystatechange в аяксе,есть еще window.event.
Думаю просто эмулировать события которого еще нет ,не самое лучшее решение.
Пускай инициирует действие тот обьект в котором и происходят действия, так в целом и принято.
Ведь то что ты хочеш решить - это простейшее, попробуй сделать даже малюсенькую игрушку с динамикой и отбросиш много вопросов.
Invis1ble
bodja
Цитата
Пускай инициирует действие тот обьект в котором и происходят действия

пока это самый оптимальный вариант с точки зрения работоспособности + быстродействия
Цитата
так в целом и принято

это не повод искать более элегантные решения, прогресс не стоит на месте

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

bodja
Invis1ble

Цитата
это не повод искать более элегантные решения, прогресс не стоит на месте


ООП- это уровень управления кодом , то есть если в функциональном программировании ты создаеш-меняеш переменные, то в ООП ты создаеш-меняеш код (и переменные тоже biggrin.gif ).
Только так можно строить программы любой сложности и гибкости очень маленьким количеством кода.
Плодить обьекты как бактерии в унитазе, изменять их, управлять ими,взаимодействовать между ними.
Скажи, ты много видел такого кода?
Думаеш я постоянно не ищу? sad.gif
Invis1ble
Цитата
Думаеш я постоянно не ищу?

я так не думаю, просто обозначил свою позицию по поводу "так в целом и принято"

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

killer8080
Invis1ble
а как быть тачскринам? Мобильные девайсы нынче весьма популярны. Или это в планах для будущих версий?

PS вообще делать фейки для стандартных контролов не есть гуд, дизайн, дизайном, но функциональность и стабильность ИМХО важнее.
Invis1ble
killer8080
Цитата
а как быть тачскринам? Мобильные девайсы нынче весьма популярны. Или это в планах для будущих версий?

да, в планах. У меня нет девайсов с тачскрином для тестов. Но насколько я знаю, они умеют преобразовывать mouseup, mousemove и mousedown в свои родные события.
Цитата
PS вообще делать фейки для стандартных контролов не есть гуд, дизайн, дизайном, но функциональность и стабильность ИМХО важнее.

согласен, но это я реализовывал заморочку заказчика. Он кстати вообще не упоминал про полосу прокрутки, а говорил ориентироваться только на колесо мыши, т.е. скроллбар вообще не нужно было выводить, это моя инициатива )

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

killer8080
Цитата (Invis1ble @ 11.02.2013 - 15:18)
У меня нет девайсов с тачскрином для тестов.

вечером потестю, отпишусь smile.gif
Invis1ble
killer8080
было бы круто, спасибо

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

killer8080
как обещал, протестировал код на планшете.
ОС Android 4.0.4
браузеры:

встроенный браузер
Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; FreeTAB Build/RK2906) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30

Firefox
Mozilla/5.0 (Android; Tablet; rv:18.0) Gecko/18.0 Firefox/18.0

Opera mobile
Opera/9.80 (Android 4.0.4; Linux; Opera Tablet/ADR-1301071546) Presto/2.11.355 Version/12.10

Maxthon 2.6.9 (почемуто выдаёт юзер агент встроенного браузера)
Mozilla/5.0 (Linux; U; Android 4.0.4; ru-ru; FreeTAB Build/RK2906) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30

как и ожидалось, ни в одном из них скролл не работает. Нужно добавить кнопки на скролл бар, ну и реакция на клик по нему, то же будет уместной.
Invis1ble
killer8080
Спасибо за тесты. Как будет время свободное - добавлю поддержку тачскринов.
Насчет кнопок - в первую очередь, я думаю, проще будет добавить поддержку touchstart и пр. событий для d'n'd., т.к. не потребуется сильно рефакторить код.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

killer8080
Насчет drag'n'drop не уверен будет ли оно работать на тачах, насчет тач эвентов неплохая мысль smile.gif
Ещё было бы неплохо добавить поддержку клавиатуры, отсутствие привычной реакции на стрелки, PgUP PgDown Home End и т.п. не есть гуд.
Invis1ble
Цитата
было бы неплохо добавить поддержку клавиатуры
Invis1ble
Цитата (killer8080 @ 11.02.2013 - 14:22)
а как быть тачскринам? Мобильные девайсы нынче весьма популярны. Или это в планах для будущих версий?

не прошло и 3 года smile.gif
добавил поддержку девайсов с тачскрином, просьба потестить, у кого есть возможность:
https://invis1ble.github.io/scrollbox ( http://bit.ly/1oglsk2 )

1) скролл с помощью непосредственного перетаскивания скроллбара
2) скролл с помощью свайпа и свайпа с ускорением (механика и анимация - закос под андроид)

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Kusss
Invis1ble
В Хроме же есть эмуляция мобильного девайса. F12 - Ctrl+Shift+M
И да, там не работает старая, и работает новая.

Есть мелкий баг "эмуляции скрола". Рассинхрон по высоте. При полной прокрутке курсор убегает вверх.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.