Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XML documentElement не везде работает, Не работает в GoogleChrome 
V
    Опции темы
DissDoc
Дата 15.8.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Всем привет. Появилась проблема чтения xml-файла.
Во всех браузерах прекрасно работает такая связка
Код

markerCities = function() {
    GDownloadUrl("city.xml", function(data) {
         var gxml = GXml.parse(data);
         var cities = gxml.documentElement.getElementsByTagName("city");
         alert(cities.length);         
    });
}

Везде выдается 5 тегов для городов, кроме Хрома. В нем выдается 0.
Проходился дебагером, проверял построчно. Ошибок нет! Он просто не читает тегов.
Встречалась ли у кого такая ошибка и как с ней бороться?
PM MAIL WWW   Вверх
Amphiluke
Дата 15.8.2010, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



А можно взглянуть на функцию GDownloadUrl?

Добавлено через 7 минут и 31 секунду
Впрочем, не надо…
Вы проверяли, что gxml.documentElement в Chrome указывает именно на нужный корневой элемент? И что будет, если вместо метода getElementsByTagName попробовать ради эксперимента через childNodes?
PM   Вверх
DissDoc
Дата 15.8.2010, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



1. Во время вызова childNodes - в Хроме - 1 (вместо нуля), во всех браузерах - 5 (как и было) тегов
2. Как проверить в хроме, что он указывает на нужный корневой элемент? Как вообще посмотреть на какой элемент указывается?

Это сообщение отредактировал(а) DissDoc - 15.8.2010, 11:36
PM MAIL WWW   Вверх
Amphiluke
Дата 15.8.2010, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Цитата(DissDoc @  15.8.2010,  15:36 Найти цитируемый пост)
Во время вызова childNodes - в Хроме - 1 (вместо нуля)

Вот и посмотрите, кто это там такой один…


Цитата(DissDoc @  15.8.2010,  15:36 Найти цитируемый пост)
Как проверить в хроме, что он указывает на нужный корневой элемент? Как вообще посмотреть на какой элемент указывается?

Считать имя элемента через свойство nodeName
Код

alert(gxml.documentElement.nodeName);


Добавлено через 3 минуты и 19 секунд
И вообще, переменная data — это строка? Она имеет правильное содержимое в Chrome?
PM   Вверх
DissDoc
Дата 15.8.2010, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Chrome берет тег html, когда все браузеры берут cities (как надо)
Объект data - во всех браузерах содержит мой xml, а в Хроме пустота :( Строка имеет пустое значение.
PM MAIL WWW   Вверх
Amphiluke
Дата 15.8.2010, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



DissDoc, значит, все-таки проблема в функции GDownloadUrl. Я так понимаю, она во втором переметре принимает ссылку на callback функцию и при успешном получении xml-файла вызывает ее передавая через параметр data содержимое xml?
Как грузится xml-файл? Как-то мне помнится, у Chrome были проблемы с методом load(). Если вы используете именно его, попробуйте перейти на XMLHttpRequest.
PM   Вверх
DissDoc
Дата 15.8.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Да. вы правы, Document.load() не поддерживается WebKit движком.
Сделал как вы советовали (оптимизировал под все браузеры). Получилось вот так
Код

var error = "";
var file = "city.xml";
try //Internet Explorer
{
 xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
 xmlDoc.async=false;
 xmlDoc.load(file);
 alert(xmlDoc);
}
catch(e)
{
 try //Firefox, Mozilla, Opera, etc.
 {
  xmlDoc=document.implementation.createDocument("","",null);
  xmlDoc.async=false;
  xmlDoc.load(file);
  alert(xmlDoc);
 }
 catch(e)
 {
  try //Google Chrome
  {
   var xmlhttp = new window.XMLHttpRequest();
   xmlhttp.open("GET",file,false);
   xmlhttp.send(null);
   xmlDoc = xmlhttp.responseXML.documentElement;
   alert(xmlDoc);
  }
  catch(e)
  {
   error=e.message;
   alert(error);
  }
 }
}

Работает везде, кроме злополучного Chrome. Выдается ошибка NETWORK_ERR XmlHttpRequest Exception 101
Погуглил, решения так и не нашел.. Я не понимаю, вообще должно работать или такое в этом браузере вообще нет, чтобы xml загружать? :(

Добавлено через 9 минут и 32 секунды
Я понимаю, что эта ошибка вызывается при ошибке сети (во время синхронного запроса). Но как это понять? Что делать?
PM MAIL WWW   Вверх
DissDoc
Дата 16.8.2010, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 463
Регистрация: 13.7.2006

Репутация: нет
Всего: нет



Проблема была с сервером smile Теперь все нормально работает. Рад безмерно!!!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.