浏览器问题:图表不会在IE8上呈现

时间:2011-01-04 15:55:58

标签: javascript namespaces canvas dojo cross-browser

我们有内部库,它使用canvas在我的应用程序中显示图表。和dojo作为脚本语言。一切都很好,但我的图表没有出现在IE8中。 我谷歌这个,发现在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时一样,我得到了萤火虫错误'document.namespaces is undefined'

问:我们如何解决这个问题,是否有更好的替代方法可以解决与浏览器相关的基本问题,图表在其他浏览器上正常呈现但在IE8上没有,任何建议?

更新

有哪些方法可以解决此类跨浏览器问题?

1 个答案:

答案 0 :(得分:0)

关于您提到的跨浏览器问题,基本上有两种方式:browser sniffingobject detection。浏览器嗅探是检测浏览器供应商和版本。例如,您可以从navigator对象知道浏览器是IE 8或Firefox 4.0。对象检测用于在实际使用之前测试对象/功能是否在浏览器上可用。

对于您在这里遇到的问题,您可以使用这两种方法。例如,您可以使用dojo.isIE嗅探浏览器。

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

或者您可以使用:

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