Есть ли готовая либа для прозрачный работы с вендорами в javascript?
ну вы поняли о чем я
типа window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.wozRequestAnimationFrame || window.oRequestAnimationFrame || function(callback){ return setTimeout(callback, 1000/60) } тока на ВСЕ вендорные свойства и еще чтобы баги фиксила браузерные автоматом и новые методы в массив старых браузеров добавляла сразу) и кофе заваривала, ну короче такой browserfix.js уже есть готовый? |
Хочешь чтобы было заебись - сделай это сам.
Суть такая что можно использовать все новые вендорные штуки как обычные. При попытке использовать такую штуку там где она не подерживается сработает событие о том что браузер устарел. алгоритм такой - если свойства нет, то ищутся свойства с префиксами, если и их нет то пытаемся использовать альтернативную реализацию, если и её не удается использовать, то срабатывает событие устаревшего браузера. Скрипт бережно предупреждает это версия 0.0 так что пока реализовано только удаление префиксов в window, завтра добавлю удаление префиксов в element.style.webkitBlablabla |
Для подстановки CSS-префиксов и имплментации новых свойств есть либа, на сколько хорошая не знаю, можешь проверить )
|
monolithed,
лол, в соседнем топике её обсуждали)) не, моя либа лучше, так как она работает с JS частью добавляя прозрачную кроссбраузерность. Седня добавил прокси свойства, чтобы например element.style.animation перенаправляло на mozAnimation )) или event.movementY перенаправляло на event.webkitMovementY суть такова: скрипт смотрит есть ли уже такое свойство, если есть то не трогает его, если нет, то ищет его вендорные аналоги и копирует в это свойство, если вендорные аналоги не найдены то смотрит какую альтернативную реализацию оставил пользователь (ну там можно за место bull писать альтернативную реализацию) если и альтернативной реализации нет, то тогда вешается геттер который при попытке обратиться к свойству вызовет событие browserOldWarning которое принимает разные параметры о браузере и о свойстве которое запрашивалось, можно обработать это событие и вывести окошко например с предложением обновить браузер) Обычно прокси вешаются на прототипы CSSStyleDeclaration.prototype (для стилей например) А обычные заглушки вешаются на обычные обьекты например на window.URL или window.Worker или window.Proxy IE8 СРАЗУ детектится так как в нем не работает ДАЖЕ этот скрипт и СРАЗУ срабатывает событие о том что браузер устарел. Так как он действительно устарел что в нем "ДАЖЕ МОЙ СКРИПТ ДЛЯ ДЕТЕКТИРОВАНИЯ СТАРЫХ БРАУЗЕРОВ И СООБЩЕНИЯ ЧЕЛОВЕКУ ЧТО ЕМУ НУЖНО ОБНОВИТЬ БРАУЗЕР" - не работает)) Разумеется становится очевидно что человеку нужно обновить браузер, при чем срочно) Не забывайте, перед этим мы сделали все что смогли... но наш сайт в браузере работать НЕ БУДЕТ... И лучше обьяснить человеку причину. |
в будущем надо будет разделить предупреждения на варнинги и ерроры.
так как обращение даже к style.boxReflect например вызывает еррор событие |
Цитата:
|
Цитата:
danik.js, хорошо, ты видимо не понял суть, ты В ЛЮБОМ СЛУЧАЕ ЭТО ДЕЛАЕШЬ я это лишь автоматизирую. ты можешь не вешать обработчик на событие "браузер устарел" и твои скрипты просто перестанут работать без какого либо предупреждения.. все возможные и невозможные альтернативные реализации того что ты делаешь я УЖЕ впичкаю в этот скрипт. Тут ТО ЖЕ САМОЕ что люди делают каждый раз только прозрачно и автоматизированно. Как тебе еще то обьяснть)) объясню по русски: "этот скрипт - НЕ ЯВЛЯЕТСЯ заглушкой на IE и установив этот скрипт люди не будут покидать твой сайт из за предупреждения обновить браузер" - носом тыкнул |
|
Tim,
я вот и думал кстати на него ссылку давать если ишак старый. или выдавать тупо конфирм типа требуется плагин (ни чо , вон флеш люди все качали ручками, так и тут) но я оставлю это уже человеку на усмотрение, в событие будет передаваться версия браузера и свойство которое он не смог обработать а человек уже будет решать чо делать |
Например события движения мышки в новых браузерах поддерживают такое свойство как movementX, но с префиксами.
Мы просто можем добавить прокси заглушки на прототип событий мыши. И эта прокси заглушка автоматически будет перенаправлять все взаимодействия с ней на вендорное свойство. fix.addProxyCap({ target: MouseEvent.prototype, caps: { movementX: null, movementY: null } }); БАБАХ, и все работает) e.movementX в событиях становятся доступными )) А за место null можно написать альтернативную реализацию. При обращении к свойству ищутся вендорные аналоги, если не находятся то применяется алььтернативная реализация, если и её нет, то ПРИ ОБРАЩЕНИИ к этому свойству события) срабатывает событие "устарелый браузер" п.с. по скольку прокси мы вешаем на прототип, то если в самом обьекте event появится БЕЗПРЕФИКСНОЕ это свойство, то запрос до нашей прокси так и не дойдет))) |
Часовой пояс GMT +3, время: 01:18. |