Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.09.2011, 15:20
Интересующийся
Отправить личное сообщение для kingrus Посмотреть профиль Найти все сообщения от kingrus
 
Регистрация: 02.02.2011
Сообщений: 28

Кривое отображение в IE, Opera, Chrom
Добрый день всем! Возникла проблема с отображением xml каталога в браузерах IE, Chrom, Opera.

FireFox выводит корректно. Проблема, по моему, заключается в том, что не переносится строка в ячейке таблицы, и не понятно мне почему.

Вот код

<script type="text/javascript">
/*var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }*/
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
  }
xmlhttp.open("GET","http://allaboutfishing.ru/laserhp.xml", false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML; 
document.write("<table width='600' class='tableXml' cellspasing='0' border='0'><tr><td width='80'>Модель</td><td width='230'>Совместимость</td><td width='75'>Ресурс(стр.)</td><td width='75'>Вес, кг</td><td width='100'>Габариты, мм</td></tr>");
var x=xmlDoc.getElementsByTagName('LASER');
for (i=0;i<x.length;i++)
  { 
  document.write("<tr><td valign='top'>");
  document.write(x[i].getElementsByTagName("MODEL")[0].childNodes[0].nodeValue+"</td><td valign='top' >");
  //document.write("</td><td valign='top' >");
  document.write(x[i].getElementsByTagName("COMPATIBILITY")[0].childNodes[0].nodeValue);
  document.write("</td><td valign='top'>");
  document.write(x[i].getElementsByTagName("RESURS")[0].childNodes[0].nodeValue);
  document.write("</td><td valign='top'>");
  document.write(x[i].getElementsByTagName("WEIGHT")[0].childNodes[0].nodeValue.substring(0,5));
  document.write("</td><td valign='top'>");
  document.write(x[i].getElementsByTagName("SIZE")[0].childNodes[0].nodeValue);
  document.write("</td></tr>");
  }
document.write("</table>");
</script>


Результат можете глянуть по адресу тут . Скрипт не под этот сайт делается. На этот сайт чисто для примера поставил.
Результат во всех браузерах должен быть такой же как и в Moziila FF

Буду очень благодарен помощи. Нужно срочно, а разобраться сам, что-то не могу.

Последний раз редактировалось kingrus, 09.09.2011 в 11:00.
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2011, 09:52
Интересующийся
Отправить личное сообщение для kingrus Посмотреть профиль Найти все сообщения от kingrus
 
Регистрация: 02.02.2011
Сообщений: 28

Поможет кто - нибудь ? )
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2011, 10:42
Аватар для crayday
Аспирант
Отправить личное сообщение для crayday Посмотреть профиль Найти все сообщения от crayday
 
Регистрация: 30.08.2011
Сообщений: 61

Мне тоже пока непонятно, почему =)) Но я заинтригован. Посмотрю попозже, если раньше ответ не будет найден.
Ответить с цитированием
  #4 (permalink)  
Старый 09.09.2011, 11:06
Интересующийся
Отправить личное сообщение для kingrus Посмотреть профиль Найти все сообщения от kingrus
 
Регистрация: 02.02.2011
Сообщений: 28

Мое предположение, что более корректно было-бы выводить все с помощью innerHTML, в заранее подготовленный див. Т.е. сначала этот див определить, а потом с помощью иннера пихнуть туда данные. Может быть с document.write браузеры не видят каркас...

И еще, пробовал указывать width td и в px и в %, результата тоже не дало. На изменение высоты td - браузеры реагируют, а на изменение ширины - нет...
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2011, 11:40
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

document.write! Я не понимаю, откуда все новички набираются этой отвратительнейшей хрени - использовать document.write. Забудьте про это вообще. innerHTML..
Ответить с цитированием
  #6 (permalink)  
Старый 09.09.2011, 12:16
Интересующийся
Отправить личное сообщение для kingrus Посмотреть профиль Найти все сообщения от kingrus
 
Регистрация: 02.02.2011
Сообщений: 28

так проблема в том, что документ врайт ? Ок, а если мы имеем 1 див, в который должны пихать данные, и в цикле у меня должно быть только <tr><td></td></tr> , а <table> и </table> выводить нужно до и после цикла. А с помощью чего <table> вывести в тот же див? Вроде же нельзя выводить в один и тот же див несколько inner.HTML или я ошибаюсь?
Ответить с цитированием
  #7 (permalink)  
Старый 09.09.2011, 13:32
Интересующийся
Отправить личное сообщение для kingrus Посмотреть профиль Найти все сообщения от kingrus
 
Регистрация: 02.02.2011
Сообщений: 28

Проблема заключалась в неправильно оформленном xml. Были длинные названия строчек, браузер считал за одно слово и не переносил. Но проблема осталась в IE, пока по непонятным прчинам
Ответить с цитированием
  #8 (permalink)  
Старый 09.09.2011, 14:08
Профессор
Отправить личное сообщение для Триви Посмотреть профиль Найти все сообщения от Триви
 
Регистрация: 23.04.2010
Сообщений: 354

Сообщение от ваый Посмотреть сообщение
document.write! Я не понимаю, откуда все новички набираются этой отвратительнейшей хрени - использовать document.write. Забудьте про это вообще. innerHTML..
Прекрасно понимаю откуда..
Думают, что это как серверный скрипт, которому всё равно что генерить))
Ответить с цитированием
  #9 (permalink)  
Старый 09.09.2011, 16:05
Аватар для crayday
Аспирант
Отправить личное сообщение для crayday Посмотреть профиль Найти все сообщения от crayday
 
Регистрация: 30.08.2011
Сообщений: 61

Сообщение от kingrus Посмотреть сообщение
Проблема заключалась в неправильно оформленном xml. Были длинные названия строчек, браузер считал за одно слово и не переносил. Но проблема осталась в IE, пока по непонятным прчинам
То есть сейчас проблема считается решённой, скажем, в Хроме? У меня в хроме по-прежнему то же самое показывается.

Таблица содержит очень длинные фразы в ячейках, не разделённые пробелами. Слово, не разделённое пробелами, по умолчанию, не разбивается браузером. В этом случае для ячеек следует указывать css-свойство:
Код:
td {
word-break: break-all; /* разбивать по буквам */
}
http://www.w3.org/TR/css3-text/#word-break0

Ну, и document.write, как и .innerHTML, разумеется, к вопросу не имеют никакого отношения.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Opera не выполняет style.fontSize=... в поле input Маэстро Opera, Safari и др. 6 20.06.2011 12:03
Неккоректное отображение jquery меню в Google Chrome и Opera Galyanov Opera, Safari и др. 6 25.01.2011 00:26
return в opera lavrey Events/DOM/Window 2 17.07.2010 17:26
Чего на сервере прикрутить чтобы Opera и Chrom понимали javascript? Casufi Оффтопик 0 08.02.2010 14:33
Не возвращается XML-ответ в Opera после AJAX-запроса Yojik Общие вопросы Javascript 4 17.03.2008 05:56