![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
anthonyBoard |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 11.8.2008 Где: Russia, Obninsk Репутация: нет Всего: нет |
Доброй ночи!
Уважаемые товарищи, помогите вразумить IE. Ну ни в какую он не хочет создавать прототипы для Node. Пробовал такой вариант:
но IE это не вразумило, он начинает ругаться при обращении document.getElementById('id элемента').моя_функция(). "моя_функция" - это конечно не настоящее название функции, а getElementById - получает хендл DIV'а. Заранее благодарен за помощь! |
|||
|
||||
anthonyBoard |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 11.8.2008 Где: Russia, Obninsk Репутация: нет Всего: нет |
Что-то такое подозрение, что IE не поддерживает прототипы для DOM. Ни для Element ни для Node прототипы не создаются.
У кого-нибудь есть какие соображения на эту тему? |
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
document.getElementById('id элемента') возвращает не Node, а Object.
Поэтому от назначения нового метода для Node ты ничего не выигрывашь. А ИЕ очень даже хорошо поддерживает прототипы. Кстати, из описаний: "Свойство prototype позволяет расширить функциональность встроенных объектов JavaScript." Встроенные объекты - это String, Array, Function, Date, Object и др. |
|||
|
||||
An6rey |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 13.10.2008 Репутация: 1 Всего: 5 |
IDVsbruck, в IE Object не наследуется элементами. Для этого в prototype.js при доступе к элементу эти свойства дописываются программно.
Но использовать дополнительные свойства в Object является плохим ходом. Это давно обсуждалось и является одним их плюсов jQuery, которая оставляет в покое Object.prototype. Отрицательных момента по крайней мере два: 1) С JSON объектом не получится работать как с ассоциативным массивом (появятся лишние свойства) 2) С массивами нельзя будет работать при помощи цикла for...in |
|||
|
||||
IDVsbruck |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: 8 Всего: 22 |
||||
|
||||
Zeroglif |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
||||
|
||||
anthonyBoard |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 11.8.2008 Где: Russia, Obninsk Репутация: нет Всего: нет |
а не Element? Почему же все браузеры кроме IE работают как и предполагается? Если я создам прототип Element.prototype.функция или Node.prototype.функция - Mozilla, Opera, Safari будут дальше с этим работать без каких либо проблем. Добавлено @ 00:17 Хотя может быть действительно возвращается Object, но тогда почему, опять таки, не возникает никаких проблем в вышеуказанных трех браузерах? Это сообщение отредактировал(а) anthonyBoard - 14.12.2008, 00:19 |
|||
|
||||
anthonyBoard |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 11.8.2008 Где: Russia, Obninsk Репутация: нет Всего: нет |
Решил вернуться к этой теме, т.к. вопрос до сих пор не решен.
Существуют ли какие-нибудь варианты, чтобы добавить объекту функцию? Просто хочется красоты и аккуратности в коде. Вот тут речь шла о программном добавлении функций, это на сколько я понимаю делается следующим образом: 1. Функция $ получает хендел элемента 2. Добавляет функции 3. Возвращает все это дело Я правильно понял? Думаю в моем случае это будет единственный и верный вариант. И еще терзает вопрос, почему в Firefox и Opera работает вариант, если я добавляю прототипы в Node и getElementById потом получаю объект - все функции прототипные Node доступны, а в IE нет. Firefox и Opera возвращают в getElementById Node? |
|||
|
||||
An6rey |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 13.10.2008 Репутация: 1 Всего: 5 |
Да ты понял правильно.
В Опере и ФФ это так потому что они так написаны. По поводу ИЕ нужно еще сказать спасибо, что можно использовать тот вариант который ты описал ($) Они могли бы не давать и ту возможность и тупо реализовать спецификацию DOM (DHTML) без возможности добавлять новые функции и свойства. |
|||
|
||||
DenVdmj |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 11.6.2007 Репутация: нет Всего: нет |
anthonyBoard, читайте тут: http://forum.vingrad.ru/forum/topic-189669/view-all.html
+ еще: http://forum.vingrad.ru/act-ST/f-74/t-175689.html Это сообщение отредактировал(а) DenVdmj - 3.2.2009, 07:34 |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |