![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| JaOlga |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Помогите пожалуйста разобраться с проблемой!
Необходимо загрузить html-документ и с помощью DOM-методов нарисовать соответствующее ему дерево. Я загружаю документ :
но получаю исключение "rootElement has no properties" rootElement = null В чем моя ошибка? Я новичок в javascript. Спасибо! |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Имхо, в том, что к моменту вызова pendingDoc.getElementById XML разбираемый документ не успевает еще загрузиться. JS ведь не дожидается окончания load, а идет дальше. Строки 4-5 нужно поместить в функцию, которая будет вызваться по pendingDoc.onload. Как здесь. -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Добавь pendingDoc.async = false перед .load, заблокируешься до загрузки (хотя это не красиво).
Также убедись, что подгружаемый документ - это валидный XML (валидный HTML4 - не валидный XML) -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| JaOlga |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Sardar, у меня документ именно html. Его ведь можно анализировать методами DOM?
Добавлено через 14 минут и 46 секунд
Теперь генерируется исключение pendingDoc has no properties (( |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Да, если загрузить в ифрейм. XML парсером по идее нет, по крайней мере без особо хитрых, платформо-зависимых настроек. Он просто вывалиться оставив в .documentElement == null. Этого не может быть. Дай полный листинг (и привыкни давать сбойный код, читать мысли сложно). -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| JaOlga |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Пробую разобрать xml-документ:
И генерится то самое исключение this.pendingDoc has no properties А вот мой xml-файл
|
||||
|
|||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Если тебе действительно хочется получить ответ, то помимо кода всегда нужно указывать где вылетает ошибка и желательно сам текст ошибки. Так принято не только на форумах. В 24 строке верно? this.pendingDoc.onload = createNode; замени на this.pendingDoc.onload = function() { this.createNode.apply(this, arguments); }. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| JaOlga |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
||||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Просто создай ифрейм (document.createElement("iframe") либо добавь в вёрстку скрытый заранее), загрузи в него документ (.src = url), возьми iframe.contentWindow.document или iframe.document - это DOM 1 документ.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| JaOlga |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Я должно быть достала своими вопросами, но хоть убейте не понимаю почему так происходит
Тело html-документа выглядит следующим образом:
Пытаюсь получить все дочерние узлы body:
Причем разбор раздела head идет как по маслу!! |
||||
|
|||||
| JaOlga |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Да, кстати. Если хтмл-документ содержит помимо стандартных тегов еще и теги, определенные пользователем, как его тогда разбирать?
Наверное, предется писать собственный парсер, да? Дом-методы придется видимо оставить. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Документ ещё не загрузился (после .src = url нужно немного подождать, лучше ловить .onload), либо ссылка на документ не правильная и документ никогда не загрузиться. Проверь что в body.innerHTML лежит. DOM не зависит от содержания, это механизм доступа к узлам любого XML (подобного) документа. Свой парсер не нужен. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| JaOlga |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Неправильная быть не может, если голова опозналась ??
А в DOM Inspector Mozilla тоже дерево строится путем анализа DOM-методами исходного документа? Он все подряд анализирует. |
||||
|
|||||
| Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
document.body создаётся всегда, даже если документ не был загружен. Лиса создаёт ещё и заголовок с пустым title. Что бы не мусолить это дальше, просто напиши alert(document.documentElement.innerHTML); - этой техникой лучше пользоваться всегда в подобной ситуации, лучше чем просто гадать.
Конечно. DOM это механизм доступа к любому узлу. Там нет "дай мне ссылку", там есть "дай мне элемент под имеем ...", где "..." может быть что угодно, включая элементы определённые тобой. Другое дело что документ будет не валидным (но well-formed) согласно DTD. Что бы точно можно было грузить любой контент в любом браузере - используй XML. Можно ли достать тег "sardar"? Пробуем:
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
| JaOlga |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Спасибо за помощь !
|
|||
|
||||
| JaOlga |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
И еще один маленький вопросик: как отличить свой user-defined тег от описанных в стандарте хтмл?
Чтобы отображать только свои теги на экране, без примесей хтмл. Добавлено через 7 минут И еще один маленький вопросик: как отличить свой user-defined тег от описанных в стандарте хтмл? Чтобы отображать только свои теги на экране, без примесей хтмл. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |