我们有内部库,它使用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上没有,任何建议?
更新
有哪些方法可以解决此类跨浏览器问题?
答案 0 :(得分:0)
关于您提到的跨浏览器问题,基本上有两种方式:browser sniffing和object 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
}