jQuery, XML как строка и IE - PullRequest
       13

jQuery, XML как строка и IE

0 голосов
/ 17 февраля 2010

Я только что унаследовал проект, в котором главное навигационное меню в настоящее время Flash. Они спросили, могу ли я переключить его на javascript, поэтому я согласился дать ему шанс. Сама навигационная структура динамически генерируется на сервере, а новые узлы выбираются с помощью вызова ajax. Возврат - это все XML.

Чтобы предотвратить задержки при начальной загрузке, сервер отправляет xml от первого вызова текущей страницы в текстовую область.

Firefox и Chrome могут просто извлекать этот XML и манипулировать им в jQuery. IE, однако, душит. Я знаю, что IE не работает хорошо, если тип MIME не установлен, но, поскольку сервер по сути закрыт, мне нужно найти способ обойти это.

Пример XML-файла, хранящегося в текстовой области, будет выглядеть примерно так:

<nav> <item name='Link 1' url='http://www.somesite.com' img='/path/to/image.png' /> <item name='Link 2' url='http://www.somesite.com' img='/path/to/image.png' /> </nav>

Я собираю содержимое с помощью метода .val (), который работает во всем, кроме IE. Я на некоторое время ударился головой об этом. Любая помощь?

Ответы [ 3 ]

5 голосов
/ 17 февраля 2010

Эта проблема была решена здесь

<script type="text/javascript">

$(parseXml($("#xml").val())).find('item').each(function(){
 ...

});

function parseXml(xml)
{
    if (jQuery.browser.msie)
    {
        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.loadXML(xml);
        xml = xmlDoc;
    }
    return xml;
}

</script>
2 голосов
/ 17 февраля 2010

Я не знаю, что использование Javascript - хорошая идея для реализации этого. Во всяком случае, я бы реализовал это как последовательность вложенных элементов UL / LI (со ссылками внутри элементов LI), а затем использовал бы стороннюю библиотеку, такую ​​как jQuery, для создания меню для вас (есть ряд плагинов, которые создадут меню для вас на основе этой структуры (или аналогичной иерархической структуры).

Это приводит к лучшей возможности поиска на вашем сайте, поскольку поисковые системы не будут обрабатывать вызов ajax для получения контента, и таким образом ваши ссылки будут встроены в страницу.

Кроме того, он требует меньше кода с вашей стороны, так как большинство библиотек, таких как jQuery, правильно абстрагируют различия в браузерах, предлагая их функциональность.

0 голосов
/ 17 февраля 2010

Рекомендуется установить тип содержимого в вызове ajax на «xml».

datatype: "xml"

IE нужно, чтобы это было конкретно прописано.

Я бы также предложил использовать json вместо XML из-за размера заголовка XML. Если это вариант для вас, я бы серьезно подумал. С Json очень легко работать и он очень быстр для вызовов ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...