Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Расширения IE-DOM для других браузеров: DOMExtensions.js. (WingedFox)
Автор Сообщение
WingedFox
Профессионал



Зарегистрирован: 29.04.2003
Сообщ.: 4035
Карма: 253
   поощрить/наказать

Откуда: Питер

СообщениеДобавлено: Пн Мая 17, 2004 5:42 pm (написано за 3 минуты 23 секунды)
   Заголовок сообщения: Расширения IE-DOM для других браузеров: DOMExtensions.js.
Ответить с цитатой

Проверка для Оперы, которая почему-то не знает про Node.prototype
Код (JavaScript): скопировать код в буфер обмена
if (Node) {
 if (!Node.prototype) {
  var node = document.createTextNode('');
 }
 Node.prototype = Node;
}



DOMextensions.zip
 Описание:
DOM Extensions
Содержит все скрипты из этой темы в одном файле.

Скачать
 Имя файла:  DOMextensions.zip
 Размер:  1,01 KB
 Скачали:  1023 раз(а)



Последний раз редактировалось: WingedFox (Чт Июл 07, 2005 5:36 pm), всего редактировалось 6 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
WingedFox
Профессионал



Зарегистрирован: 29.04.2003
Сообщ.: 4035
Карма: 253
   поощрить/наказать

Откуда: Питер

СообщениеДобавлено: Вт Июл 13, 2004 2:25 pm (спустя 1 месяц 26 дней 20 часов 43 минуты; написано за 12 секунд)
   Заголовок сообщения: removeNode
Ответить с цитатой

removeNode, работает аналогично используемой в IE.
Код (JavaScript): скопировать код в буфер обмена
if (window.Node) Node.removeNode = function(removeChildren) {
  var self = this;
  if (Boolean(removeChildren))
    return this.parentNode.removeChild( self );
  else {
    var r=document.createRange();
    r.selectNodeContents(self);
    return this.parentNode.replaceChild(r.extractContents(),self);
  }
}


Последний раз редактировалось: WingedFox (Пт Июн 17, 2005 5:30 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
WingedFox
Профессионал



Зарегистрирован: 29.04.2003
Сообщ.: 4035
Карма: 253
   поощрить/наказать

Откуда: Питер

СообщениеДобавлено: Вт Июл 13, 2004 2:26 pm (спустя 1 минуту 13 секунд; написано за 12 секунд)
   Заголовок сообщения: swapNode
Ответить с цитатой

swapNode, работает аналогично используемой в IE.
Код (JavaScript): скопировать код в буфер обмена
if (window.Node) Node.swapNode = function(swapNode) {
  var self = this;
  n = self.cloneNode(true);
  nt = swapNode.cloneNode(true);
  self.parentNode.insertBefore(nt,self);
  self.removeNode(true);
  swapNode.parentNode.insertBefore(n,swapNode);
  swapNode.removeNode(true);
}


Последний раз редактировалось: WingedFox (Пт Июн 17, 2005 5:30 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
WingedFox
Профессионал



Зарегистрирован: 29.04.2003
Сообщ.: 4035
Карма: 253
   поощрить/наказать

Откуда: Питер

СообщениеДобавлено: Вт Июл 13, 2004 2:45 pm (спустя 18 минут)
   Заголовок сообщения: attachEvent
Ответить с цитатой

дополнение к addEventListener
Код (JavaScript): скопировать код в буфер обмена
if (window.Node) {
  Node.attachEvent = function (e,f) {
    var self = this;
    return self.addEventListener(e, f, false);
  }
}
if (!window.attachEvent)                 //проверка для Оперы
  window.attachEvent= function (e,f,c) { //специально для Netscape
    var self = this;
    if (self.addEventListener) return self.addEventListener(e.substr(2), f, false);
    else self[e] = f;                                                               // для Opera 6......
  }
установка обработчика window::onload
Код (JavaScript): скопировать код в буфер обмена
if (window.attachEvent) window.attachEvent("onload",load_func);
else document.attachEvent("onload",load_func)


Последний раз редактировалось: WingedFox (Пт Июн 17, 2005 5:33 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
WingedFox
Профессионал



Зарегистрирован: 29.04.2003
Сообщ.: 4035
Карма: 253
   поощрить/наказать

Откуда: Питер

СообщениеДобавлено: Чт Окт 21, 2004 5:51 pm (спустя 3 месяца 8 дней 3 часа 6 минут; написано за 48 секунд)
   Заголовок сообщения:
Ответить с цитатой

Добавлен fireEvent.
Код (JavaScript): скопировать код в буфер обмена
  if (!Node.fireEvent)
    Node.fireEvent = function (e) {
      var eventTypes = { resize : ['HTMLEvents',1,0],
                       scroll : ['HTMLEvents',1,0],
                       focusin : ['HTMLEvents',0,0],
                       focusout : ['HTMLEvents',0,0],
                       gainselection : ['HTMLEvents',1,0],
                       loseselection : ['HTMLEvents',1,0],
                       activate : ['HTMLEvents',1,1],
                       //events above should be UIEvents, but Mozilla
                       //seems does not support this type
                       load : ['HTMLEvents',0,0],
                       unload : ['HTMLEvents',0,0],
                       abort : ['HTMLEvents',1,0],
                       error : ['HTMLEvents',1,0],
                       select : ['HTMLEvents',1,0],
                       change : ['HTMLEvents',1,0],
                       submit : ['HTMLEvents',1,1],
                       reset : ['HTMLEvents',1,0],
                       focus : ['HTMLEvents',0,0],
                       blur : ['HTMLEvents',0,0],
                       click : ['MouseEvents',1,1],
                       mousedown : ['MouseEvents',1,1],
                       mouseup : ['MouseEvents',1,1],
                       mouseover : ['MouseEvents',1,1],
                       mousemove : ['MouseEvents',1,0],
                       mouseout : ['MouseEvents',1,0],
                       keypress : ['KeyEvents',1,1],
                       keydown : ['KeyEvents',1,1],
                       keyup : ['KeyEvents',1,1],
                       DOMSubtreeModified : ['MutationEvents',1,0],
                       DOMNodeInserted : ['MutationEvents',1,0],
                       DOMNodeRemoved : ['MutationEvents',1,0],
                       DOMNodeRemovedFromDocument : ['MutationEvents',0,0],
                       DOMNodeInsertedIntoDocument : ['MutationEvents',0,0],
                       DOMAttrModified : ['MutationEvents',1,0],
                       DOMCharacterDataModified : ['MutationEvents',1,0]
                     };
      var self = this;
      e = e.substr(2);
      if (!eventTypes[e]) return false;
      var evt = document.createEvent(eventTypes[e][0]);
      evt.initEvent(e,eventTypes[e][1],eventTypes[e][2]);
      return self.dispatchEvent(evt);
    }
Как и для IE нужно передавать on+"eventName"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
AKS
Участник форума



Зарегистрирован: 28.12.2005
Сообщ.: 1174
Карма: 101
   поощрить/наказать


СообщениеДобавлено: Сб Апр 29, 2006 3:21 pm (спустя 1 год 6 месяцев 7 дней 21 час 29 минут; написано за 40 секунд)
   Заголовок сообщения:
Ответить с цитатой

WingedFox
Продолжаю ковыряться (как Вы мне и рекомендовали) в Ваших исходниках... Здесь возник вопрос - везде var self = this, зачем?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
WingedFox
Профессионал



Зарегистрирован: 29.04.2003
Сообщ.: 4035
Карма: 253
   поощрить/наказать

Откуда: Питер

СообщениеДобавлено: Сб Апр 29, 2006 6:38 pm (спустя 3 часа 16 минут; написано за 2 минуты 38 секунд)
   Заголовок сообщения:
Ответить с цитатой

AKS
Конкретно здесь - оно особо не нужно. Появилось из клонирования removeNode, где this в replaceChild ронял некоторые браузеры.

Вообще, служит для сохранения контекста конструктора.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора ICQ Number
Ant
Сотрудник «Лаборатории»



Зарегистрирован: 17.06.2003
Сообщ.: 6804
Карма: 121
   поощрить/наказать


СообщениеДобавлено: Пн Мая 01, 2006 9:09 am (спустя 1 день 14 часов 31 минуту)
   Заголовок сообщения:
Ответить с цитатой


М

BrowserExtensions (DOM, Object, Array, ...)
Тема закрыта.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Показать сообщения:   
Начaть нoвую тeму   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения. Часовой пояс: GMT + 3 (Москва)
Страница 1 из 1   
Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете голосовать в опросах. Вы не можете прилагать файлы к сообщениям. Вы можете скачивать файлы.
  XML