Проблема с браузером: диаграммы не отображаются в IE8 - PullRequest
1 голос
/ 04 января 2011

У нас есть собственная библиотека, которая использует холст для отображения графиков в моем приложении.И додзе как язык сценариев. Все хорошо, но мои диаграммы не появляются в IE8.Я заглянул в Google по этому поводу и обнаружил, что в IE8 есть проблема с VML.

Я нашел это:

var printChart = function(time, freq){
    if (!document.namespaces['g_vml_']) {
            document.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml', '#default#VML');
        }

        if (!document.namespaces['g_o_']) {
            document.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office', '#default#VML');
        }

 if (freq === undefined) {
        this.freq = "1mi";
    }

    if (time === undefined) {
        this.time = "1dy";
    }
self.reload();
}

Теперь я пытался добавить это в мой код DOJO, и это создает проблему.Как и тогда, когда я document.namespace получаю ошибку firebug 'document.namespaces is undefined'.

Q: Как мы можем это исправить, есть ли лучшие альтернативные подходы для той же основной проблемы, с которой я сталкиваюсь?Относящиеся к браузеру, графики правильно отображаются в других браузерах, но не в IE8, какие-либо предложения?

Обновление:

Каковы способы решения такой кросс-браузерной проблемы?

1 Ответ

0 голосов
/ 06 января 2011

Относительно упомянутых вами проблем с кросс-браузерными решениями, в основном, есть два пути: перехват браузера и обнаружение объекта .Обнаружение браузера - это определение поставщика и версии браузера.Например, вы можете знать, что браузер - это IE 8 или Firefox 4.0 из объекта navigator.Обнаружение объекта заключается в проверке того, доступен ли объект / функция в браузере, перед его фактическим использованием.

Для решения этой проблемы вы можете использовать два подхода.Например, вы можете прослушать браузер, используя dojo.isIE.

if (dojo.isIE == 8) {
    //Your code to add the namespace
}

Или вы можете использовать:

if (document.namespaces) {
   // Your code to add the namespace
}
...