Показать сообщение отдельно
  #3 (permalink)  
Старый 07.05.2012, 21:59
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

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 - точно есть (определена в прототипе)

Последний раз редактировалось Раед, 07.05.2012 в 22:40.
Ответить с цитированием