Загрузка локального XML-файла в Chrome - PullRequest
4 голосов
/ 07 апреля 2011

Мне нужно сделать проект для работы с использованием HTML5 / CSS3 / JavaScript и использованием XML в качестве поставщика данных. В требованиях указано, что он должен быть совместим с Internet Explorer, Firefox, Safari и Chrome. Я занимаюсь разработкой в ​​Firefox, так что все работает отлично. Safari также работает как удовольствие, и, к счастью, он отлично работает в новом IE9.

У меня только проблемы с его запуском в Chrome. Поскольку кажется, что Chrome поддерживает множество новых функций HTML5 / CSS3, не стоит слишком много работать, чтобы запустить его и в этом браузере. Единственная проблема заключается в том, что он отказывается загружать файл XML, и, поскольку это требуется с самого начала, вся вещь не будет загружаться.

Проведя некоторые исследования, я наткнулся на сообщения о том, что Chrome не позволяет загружать локальные файлы XML. Он должен работать в автономном режиме без использования Apache или чего-либо еще, поэтому есть ли способ заставить его работать?

Фрагмент кода, куда я загружаю свой XML в зависимости от используемого браузера:

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
    // INTERNET EXPLORER
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        try {
            xmlDoc.async="true";
            xmlDoc.load("exercise1.xml");
        } catch(ex) {
            alert("exception");
            alert(ex.message);
        }
    }else if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
    // MOZILLA FIREFOX
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    }else if (/Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        // GOOGLE CHROME
        // load xml file
        // ????????
    }else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
        // OPERA
        alert("Opera is not supported as of now");
    }else if (browser.toLowerCase().indexOf('safari') > 0){
    // APPLE SAFARI
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    } else {
    // OTHER BROWSERS
        // load xml file
        xmlDoc=loadXMLDoc("exercise1.xml");
    }

Firefox и Safari используют внешний JavaScript для загрузки XML. Я не думаю, что действительно необходимо размещать этот код здесь, так как он отлично работает в этих браузерах.

Возможно, я упустил что-то простое, но я немного погуглил и попробовал какой-то код, найденный здесь, в Stackoverflow, и до сих пор не могу заставить его работать ..

1 Ответ

2 голосов
/ 06 июля 2011

Вы можете загрузить XML-файл в Chrome, используя XMLHttpRequest следующим образом: (проверено на Chrome 12.0.742.112).

    function readxml()
    {
        xmlHttp = new window.XMLHttpRequest();
        xmlHttp.open("GET","test.xml",false);
        xmlHttp.send(null);
        xmlDoc = xmlHttp.responseXML.documentElement;
    }

Это итоговый xmlDoc, который можно увидеть в инструментах разработки Chrome.

readxml() result

Убедитесь, что на сервере имеется действительный документ XML.

<?xml version='1.0'?>

должен находиться в первой строке XML, а также проверить, что перед тегом нет пробелов.

...