внешний загруженный SVG сломан в IE (Raphael JS) - PullRequest
1 голос
/ 05 октября 2010

Я использую jQuery для загрузки внешнего SVG (карты Франции) и разбора его по путям с помощью raphaël.js следующего кода.Но он ничего не делает в IE.Любые идеи?

$(document).ready(function(){
    var paper = Raphael("canvas", 450, 380);
    var map = paper.set();

    // load svgz map
    $.ajax({
        type: "GET",
        url: "map-smllr.svgz",
        dataType: "xml",
        success: parseXml
    });

    // ... removed a few other variables

    function parseXml(xml) {
        var count = 0;
        $(xml).find("g").children("path").each(function()
        {
            var deptNr = depts[count];
            var path = $(this).attr("d");
            var c = paper.path(path);
            c.attr(attr).attr("title",deptNr);
            map.push(c);
            count++;
        });
        //startMap();
    }
});

Полный исходный код можно посмотреть здесь: http://ngjulie.com/map/raphael.html

У меня тоже есть странная проблема с кэшированием в Chrome, где отображается пустое место, пока пользователь не наводит курсор мыши надканва.

Но самая большая проблема заключается в том, что это не работает в IE.Общие примеры на сайте RaphaelJS работают нормально.Так что это должно быть что-то в моем коде.

Есть идеи?

Ура, Джули

1 Ответ

1 голос
/ 05 октября 2010

Кажется, это не работает, потому что изображения svgz и svg обслуживаются с mimetype image / svg + xml, что приводит к сбою синтаксического анализатора IE XML (если установить условие ошибки в вызове $ .ajax,Увидим, что это происходит - это хорошая практика в любом случае).Аналогично, если вы перейдете к http://ngjulie.com/map/map-smllr.svgz или http://ngjulie.com/map/map-smllr.svg в IE, вы увидите, что он пытается загрузить файл, а не анализировать его с помощью компонента синтаксического анализа IE XML.

Я думаю, что если вы предоставите файлы с типом mimetype text / xml или application / xml, это, вероятно, должно работать.Я быстро это проверил, переименовав map-smllr.svgz в map-smllr.xml, что позволило моему веб-серверу легко обслужить файл с правильным mimetype.Если вы перейдете к этому файлу в IE8, вы увидите, что он анализируется как XML.Аналогично, XHR GET завершается успешно и может анализировать файл.Все остальное тогда работает как положено.

...