Как загрузить xml-файл с JavaScript в браузерах не IE? - PullRequest
0 голосов
/ 11 ноября 2009

У меня есть следующий код, который отлично работает в IE:

xml=new ActiveXObject("MSXML2.DOMDocument");
xml.async=false
xml.load("docs.xml")

Как сделать то же самое (без AJAX) в других браузерах?

Ответы [ 6 ]

1 голос
/ 11 ноября 2009

На самом деле, без AJAX имеет смысл, если ваш HTML и JavaScript будут работать с локального носителя, так как вы не можете делать запросы XMLHttp на file://. В таких случаях вам приходится прибегать к другим методам загрузки данных XML, кроме стандартных, используемых для запросов AJAX.

В браузерах Gecko (Mozilla Firefox и аналогичных) вы можете сделать это, используя что-то вроде

xml = document.implementation.createDocument("","",null);
xml.load("docs.xml", "text/xml");

Это известная проблема, что document.implementation.createDocument не реализована в Safari / Chrome / Webkit, поэтому вам, вероятно, придется прибегнуть к загрузке содержимого в iframe и доступу к объекту contentDocument в iframe.

0 голосов
/ 12 ноября 2009

Я думаю, что вы испытываете трудности при использовании AJAX.

В вашем случае он содержит больше рисков для безопасности, и в настоящее время разработчик не будет использовать эту технологию, потому что она вызывает компонент окна, а IE предпочитает ее, чем другие браузеры.

Итак, вам следует изучить дополнительную информацию о ajax, такую ​​как jquery или prototype, mootool, они представляют собой очень мощную инфраструктуру ajax и могут легко удовлетворить ваши требования.

Удачи!

0 голосов
/ 11 ноября 2009

В зависимости от вашего варианта использования, работая с локальными файлами, вы можете рассмотреть возможность сделать это наоборот: загрузить сам файл «docs.xml» и применить таблицу стилей XSLT, используя инструкцию обработки, чтобы отобразить ее в виде HTML.

Как преобразовать XML в XHTML с помощью XSLT

0 голосов
/ 11 ноября 2009

Без ajax имеет смысл, если у вас уже есть доступный текст. xml.load (...) по-прежнему использует асинхронный вызов для извлечения документа. Если вам нужен кросс-браузерный парсер XML, попробуйте:

if (window.DOMParser)
{
  parser=new DOMParser();
  xmlDoc=parser.parseFromString(text,"text/xml");
}
else // Internet Explorer
{
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(text); 
}
0 голосов
/ 11 ноября 2009

Вы можете использовать DOMParser с Firefox.

0 голосов
/ 11 ноября 2009

Э-э ... вы не можете сделать это с Javascript, но без AJAX. Вы уже используете AJAX с имеющимся у вас кодом (в любом случае, версия AJAX от Microsoft).

Я предлагаю прочитать учебник Mozilla по AJAX для кросс-браузерного эквивалента вашего кода.

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