Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Есть ли готовая либа для прозрачный работы с вендорами в javascript? (https://javascript.ru/forum/offtopic/37288-est-li-gotovaya-liba-dlya-prozrachnyjj-raboty-s-vendorami-v-javascript.html)

megaupload 14.04.2013 13:04

Есть ли готовая либа для прозрачный работы с вендорами в javascript?
 
ну вы поняли о чем я

типа

window.requestAnimationFrame = window.requestAnimationFrame  || 
        window.webkitRequestAnimationFrame || 
        window.wozRequestAnimationFrame || 
        window.oRequestAnimationFrame ||
        function(callback){
            return setTimeout(callback, 1000/60)    
       }


тока на ВСЕ вендорные свойства и еще чтобы баги фиксила браузерные автоматом и новые методы в массив старых браузеров добавляла сразу) и кофе заваривала, ну короче такой browserfix.js уже есть готовый?

megaupload 16.04.2013 04:14

Хочешь чтобы было заебись - сделай это сам.

Суть такая что можно использовать все новые вендорные штуки как обычные. При попытке использовать такую штуку там где она не подерживается сработает событие о том что браузер устарел.

алгоритм такой - если свойства нет, то ищутся свойства с префиксами, если и их нет то пытаемся использовать альтернативную реализацию, если и её не удается использовать, то срабатывает событие устаревшего браузера.


Скрипт бережно предупреждает пользователей ишаков ниже 9 о том что у них устарелый браузер и выдает конфирм на скачку хромфрейма.


это версия 0.0 так что пока реализовано только удаление префиксов в window, завтра добавлю удаление префиксов в
element.style.webkitBlablabla

monolithed 16.04.2013 20:59

Для подстановки CSS-префиксов и имплментации новых свойств есть либа, на сколько хорошая не знаю, можешь проверить )

megaupload 16.04.2013 22:33

monolithed,
лол, в соседнем топике её обсуждали))
не, моя либа лучше, так как она работает с JS частью добавляя прозрачную кроссбраузерность. Седня добавил прокси свойства,
чтобы например

element.style.animation перенаправляло на mozAnimation ))
или
event.movementY   перенаправляло на event.webkitMovementY      


суть такова: скрипт смотрит есть ли уже такое свойство, если есть то не трогает его, если нет, то ищет его вендорные аналоги и копирует в это свойство, если вендорные аналоги не найдены то смотрит какую альтернативную реализацию оставил пользователь (ну там можно за место bull писать альтернативную реализацию) если и альтернативной реализации нет, то тогда вешается геттер который при попытке обратиться к свойству вызовет событие browserOldWarning
которое принимает разные параметры о браузере и о свойстве которое запрашивалось, можно обработать это событие и вывести окошко например с предложением обновить браузер)



Обычно прокси вешаются на прототипы CSSStyleDeclaration.prototype (для стилей например)

А обычные заглушки вешаются на обычные обьекты например на window.URL или window.Worker или window.Proxy


IE8 СРАЗУ детектится так как в нем не работает ДАЖЕ этот скрипт и СРАЗУ срабатывает событие о том что браузер устарел. Так как он действительно устарел что в нем "ДАЖЕ МОЙ СКРИПТ ДЛЯ ДЕТЕКТИРОВАНИЯ СТАРЫХ БРАУЗЕРОВ И СООБЩЕНИЯ ЧЕЛОВЕКУ ЧТО ЕМУ НУЖНО ОБНОВИТЬ БРАУЗЕР" - не работает))

Разумеется становится очевидно что человеку нужно обновить браузер, при чем срочно)

Не забывайте, перед этим мы сделали все что смогли... но наш сайт в браузере работать НЕ БУДЕТ... И лучше обьяснить человеку причину.

megaupload 16.04.2013 22:47

в будущем надо будет разделить предупреждения на варнинги и ерроры.
так как обращение даже к style.boxReflect например вызывает еррор событие

danik.js 17.04.2013 05:25

Цитата:

Сообщение от megaupload
Разумеется становится очевидно что человеку нужно обновить браузер, при чем срочно)

О да, неработающий скрипт от javascript-юзера megaupload - это крайне веская причина обновить браузер. Прямо таки фатальный недостаток )

megaupload 17.04.2013 09:48

Цитата:

Сообщение от danik.js
О да, неработающий скрипт от javascript-юзера megaupload - это крайне веская причина обновить браузер.

веская причина обновить браузер это то что он устарел, я лишь сообщаю об этом.

danik.js,
хорошо, ты видимо не понял суть, ты В ЛЮБОМ СЛУЧАЕ ЭТО ДЕЛАЕШЬ я это лишь автоматизирую. ты можешь не вешать обработчик на событие "браузер устарел" и твои скрипты просто перестанут работать без какого либо предупреждения.. все возможные и невозможные альтернативные реализации того что ты делаешь я УЖЕ впичкаю в этот скрипт. Тут ТО ЖЕ САМОЕ что люди делают каждый раз только прозрачно и автоматизированно. Как тебе еще то обьяснть))


объясню по русски: "этот скрипт - НЕ ЯВЛЯЕТСЯ заглушкой на IE и установив этот скрипт люди не будут покидать твой сайт из за предупреждения обновить браузер"

- носом тыкнул

Tim 17.04.2013 12:18

http://www.google.com/chromeframe?hl...ickenable=true

Я просто оставлю это здесь.

megaupload 17.04.2013 12:26

Tim,
я вот и думал кстати на него ссылку давать если ишак старый.

или выдавать тупо конфирм типа требуется плагин

(ни чо , вон флеш люди все качали ручками, так и тут)


но я оставлю это уже человеку на усмотрение, в событие будет передаваться версия браузера и свойство которое он не смог обработать а человек уже будет решать чо делать

megaupload 17.04.2013 21:57

Например события движения мышки в новых браузерах поддерживают такое свойство как movementX, но с префиксами.

Мы просто можем добавить прокси заглушки на прототип событий мыши.
И эта прокси заглушка автоматически будет перенаправлять все взаимодействия с ней на вендорное свойство.

fix.addProxyCap({
	target: MouseEvent.prototype,

	caps: {
		movementX: null,
		movementY: null
	}
});



БАБАХ, и все работает)
e.movementX в событиях становятся доступными ))



А за место null можно написать альтернативную реализацию.

При обращении к свойству ищутся вендорные аналоги, если не находятся то применяется алььтернативная реализация, если и её нет, то ПРИ ОБРАЩЕНИИ к этому свойству события) срабатывает событие "устарелый браузер"

п.с. по скольку прокси мы вешаем на прототип, то если в самом обьекте event появится БЕЗПРЕФИКСНОЕ это свойство, то запрос до нашей прокси так и не дойдет)))


Часовой пояс GMT +3, время: 01:18.