Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.08.2012, 16:34
Новичок на форуме
Отправить личное сообщение для norabirkin Посмотреть профиль Найти все сообщения от norabirkin
 
Регистрация: 09.08.2012
Сообщений: 4

Какая-то проблема с методом find в ie7 и ie8
Совсем затупил никогда такого не замечал. Не находит элементы xml-документа. Например такой скрипт:

$(document).ready(function(){
var doc = '<root><element>CONTENT</element><element>OTHERCONTENT</element></root>';
var element = $(doc).find('element');
alert($(element[0]).html());
});

В ie9 выводит строку "CONTENT", как и надо. В ie8 и ie7 не происходит ничего вообще. В прочих браузерах все в порядке. В чем может быть ошибка?
Ответить с цитированием
  #2 (permalink)  
Старый 09.08.2012, 17:07
Новичок на форуме
Отправить личное сообщение для norabirkin Посмотреть профиль Найти все сообщения от norabirkin
 
Регистрация: 09.08.2012
Сообщений: 4

Попробовал без JQuery. Странностей стало больше. Вот такой, например код:

var html = '<root><element>CONTENT</element><element>OTHERCONTENT</element></root>';
var element = document.createElement('div');
element.innerHTML = html;
alert(element.innerHTML);

В ie9 выводит "<root><element>CONTENT</element><element>OTHERCONTENT</element></root>", а в ie8 выводит
"CONTENT</ELEMENT><ELEMENT>OTHERCONTENT</ELEMENT></ROOT>". Каким-то странным образом режет html-код
Ответить с цитированием
  #3 (permalink)  
Старый 09.08.2012, 17:35
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Попробуйте способ, который описан здесь
http://javascript.ru/forum/193221-post2.html
Ответить с цитированием
  #4 (permalink)  
Старый 09.08.2012, 17:38
Новичок на форуме
Отправить личное сообщение для norabirkin Посмотреть профиль Найти все сообщения от norabirkin
 
Регистрация: 09.08.2012
Сообщений: 4

Все чудесатее и чудесатее. Ищу первый дочерний элемент.

var html = '<root><element>CONTENT</element><element>OTHERCONTENT</element></root>';
var element = document.createElement('div');
element.innerHTML = html;
var first_child = element.childNodes[0];
alert(element.innerHTML);
alert(first_child);
alert(first_child.nodeValue);
alert(first_child.innerHTML);

В ie8 первым дочерним элементом оказывается текстовый узел с содержимым ("CONTENT"). В ie9 первый дочерний элемент как и должно быть некий элемент с содержанием "<element>CONTENT</element><element>OTHERCONTENT</element>". То есть ie8 как-то так калечит код, что распарсить его адекватно уже невозможно.
Ответить с цитированием
  #5 (permalink)  
Старый 09.08.2012, 17:44
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

ёмаё, IE <= 8 не воспринимает никак незнакомые теги. Вы же парсите XML как HTML -> теги root и element уходят в никуда. либо используйте способ по ссылке из моего поста, или фиксите несуществующие элементы для IE.
"root element".replace(/(\S+?)(?=\s|$)/g, function (tagName) { document.createElement(tagName); });
// криво, но в одну строчку.
Ответить с цитированием
  #6 (permalink)  
Старый 09.08.2012, 17:47
Новичок на форуме
Отправить личное сообщение для norabirkin Посмотреть профиль Найти все сообщения от norabirkin
 
Регистрация: 09.08.2012
Сообщений: 4

А...блин...так вот в чем дело Спасибо. Сейчас попробую
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Js + Ie7 проблема onuvidelsolnce Internet Explorer 4 28.03.2011 20:21
проблема с окном в ie7 Тима ExtJS 5 05.03.2011 22:12
Проблема с ajax в IE8 vandy3 AJAX и COMET 2 23.11.2010 17:10
Проблема с отображением в IE7 MCTrane Internet Explorer 1 24.07.2010 13:14
Проблема IE7 dark Элементы интерфейса 4 07.10.2009 08:50