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

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



Joined: 29 Apr 2003
Posts: 4060
Карма: 260
   поощрить/наказать

Location: Питер

PostPosted: Mon May 17, 2004 5:42 pm (написано за 3 минуты 23 секунды)
   Post subject: Расширения IE-DOM для других браузеров: DOMExtensions.js.
Reply with quote

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



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

Download
 Filename:  DOMextensions.zip
 Filesize:  1,01 KB
 Downloaded:  1168 Time(s)



Last edited by WingedFox on Thu Jul 07, 2005 5:36 pm; edited 6 times in total
Back to top
View user's profile Send private message Visit poster's website ICQ Number
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4060
Карма: 260
   поощрить/наказать

Location: Питер

PostPosted: Tue Jul 13, 2004 2:25 pm (спустя 1 месяц 26 дней 20 часов 43 минуты; написано за 12 секунд)
   Post subject: removeNode
Reply with quote

removeNode, работает аналогично используемой в IE.
Code (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);
  }
}


Last edited by WingedFox on Fri Jun 17, 2005 5:30 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website ICQ Number
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4060
Карма: 260
   поощрить/наказать

Location: Питер

PostPosted: Tue Jul 13, 2004 2:26 pm (спустя 1 минуту 13 секунд; написано за 12 секунд)
   Post subject: swapNode
Reply with quote

swapNode, работает аналогично используемой в IE.
Code (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);
}


Last edited by WingedFox on Fri Jun 17, 2005 5:30 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website ICQ Number
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4060
Карма: 260
   поощрить/наказать

Location: Питер

PostPosted: Tue Jul 13, 2004 2:45 pm (спустя 18 минут)
   Post subject: attachEvent
Reply with quote

дополнение к addEventListener
Code (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
Code (JavaScript): скопировать код в буфер обмена
if (window.attachEvent) window.attachEvent("onload",load_func);
else document.attachEvent("onload",load_func)


Last edited by WingedFox on Fri Jun 17, 2005 5:33 pm; edited 1 time in total
Back to top
View user's profile Send private message Visit poster's website ICQ Number
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4060
Карма: 260
   поощрить/наказать

Location: Питер

PostPosted: Thu Oct 21, 2004 5:51 pm (спустя 3 месяца 8 дней 3 часа 6 минут; написано за 48 секунд)
   Post subject:
Reply with quote

Добавлен fireEvent.
Code (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"
Back to top
View user's profile Send private message Visit poster's website ICQ Number
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 104
   поощрить/наказать


PostPosted: Sat Apr 29, 2006 3:21 pm (спустя 1 год 6 месяцев 7 дней 21 час 29 минут; написано за 40 секунд)
   Post subject:
Reply with quote

WingedFox
Продолжаю ковыряться (как Вы мне и рекомендовали) в Ваших исходниках... Здесь возник вопрос - везде var self = this, зачем?
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4060
Карма: 260
   поощрить/наказать

Location: Питер

PostPosted: Sat Apr 29, 2006 6:38 pm (спустя 3 часа 16 минут; написано за 2 минуты 38 секунд)
   Post subject:
Reply with quote

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

Вообще, служит для сохранения контекста конструктора.
Back to top
View user's profile Send private message Visit poster's website ICQ Number
Ant
Сотрудник «Лаборатории»



Joined: 17 Jun 2003
Posts: 6836
Карма: 127
   поощрить/наказать


PostPosted: Mon May 01, 2006 9:09 am (спустя 1 день 14 часов 31 минуту)
   Post subject:
Reply with quote


М

BrowserExtensions (DOM, Object, Array, ...)
Тема закрыта.
Back to top
View user's profile Send private message Send e-mail ICQ Number
Display posts from previous:   
Post new topic   This topic is locked: you cannot edit posts or make replies. All times are GMT + 3 Hours
Page 1 of 1   
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
  XML