nasqad,
Я не думал, что для вас сложно разобраться в 10 строках кода.
Сообщение от nasqad
|
Но вы можете расписать что это и как работает
|
Ну так в том то и проблема, что пока никак не работает.
Может с коментами понятнее будет..
if ($m.ie) {//Если IE (объект $m точно есть, и свойство ie в нём точно правильное)
elemsProtos = [];//кэш объектов
(function recBOMS(el) {//ф-ия с вызовом на месте (принимает объект, которому нужно выставить свойства)
if (el==document) return;//дальше document - нельзя, там DOM, он не нужен
/*
Objectprototypeobject - объект, в котором определены нужные методы.
Он точно есть и методы в нём точно есть.
Следующая строка кода просто переписывает методы из Objectprototypeobject в el, если их в нём ещё нет
*/
for (var i in Objectprototypeobject) if (!(i in el)) el[i] = Objectprototypeobject[i];
elemsProtos.push(el);//кидаем объект в кэш, чтобы лишни раз с ним не работать (к примеру window.top==window и может произойти зацикливание)
for (var i in el) if (elemsProtos.indexOf(el)==-1) recBOMS(el[i]);//а теперь побегаемся по всем свойствам объекта, и если их нет в кэше, производим рекурсию
})(window);
for (var i in Objectprototypeobject) Element.prototype[i] = document[i] = Objectprototypeobject[i];//эта строка работает, на неё не обращайте внимания
}
P.S. array.indexOf - точно есть (определена в прототипе)