WingedFox
Профессионал

Зарегистрирован: 29.04.2003
Сообщ.: 4035
Карма: 253 поощрить/наказать
Откуда: Питер
|
Добавлено: Пн Мая 17, 2004 5:42 pm (написано за 3 минуты 23 секунды)
Заголовок сообщения: Расширения IE-DOM для других браузеров: DOMExtensions.js.
|
|
Проверка для Оперы, которая почему-то не знает про Node.prototype
| Описание: |
DOM Extensions
Содержит все скрипты из этой темы в одном файле. |
|
 Скачать |
| Имя файла: |
DOMextensions.zip |
| Размер: |
1,01 KB |
| Скачали: |
1023 раз(а) |
Последний раз редактировалось: WingedFox (Чт Июл 07, 2005 5:36 pm), всего редактировалось 6 раз(а)
|
|
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 раз
|
|
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 раз
|
|
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 раз
|
|
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"
|
|
AKS
Участник форума
Зарегистрирован: 28.12.2005
Сообщ.: 1174
Карма: 101 поощрить/наказать
|
Добавлено: Сб Апр 29, 2006 3:21 pm (спустя 1 год 6 месяцев 7 дней 21 час 29 минут; написано за 40 секунд)
Заголовок сообщения:
|
|
WingedFox
Продолжаю ковыряться (как Вы мне и рекомендовали) в Ваших исходниках... Здесь возник вопрос - везде var self = this, зачем?
|
|
WingedFox
Профессионал

Зарегистрирован: 29.04.2003
Сообщ.: 4035
Карма: 253 поощрить/наказать
Откуда: Питер
|
Добавлено: Сб Апр 29, 2006 6:38 pm (спустя 3 часа 16 минут; написано за 2 минуты 38 секунд)
Заголовок сообщения:
|
|
AKS
Конкретно здесь - оно особо не нужно. Появилось из клонирования removeNode, где this в replaceChild ронял некоторые браузеры. Вообще, служит для сохранения контекста конструктора.
|
|