解决JS Flot绘图报错:G_vmlCanvasManager未定义与饼图标签显示异常
本文针对Flot绘图库在IE8及以下版本中遇到的两个典型错误进行解析。首先解决'window.G_vmlCanvasManager'为空导致的脚本报错,通过引入excanvas.min.js实现Canvas兼容;其次解决饼图内部标签绘制失败的问题,指出需为绘图容器指定明确的宽高CSS样式。
Flot绘图常见报错与解决方案
在使用Flot库进行图形绘制时,今天遇到了几个具体问题。
首先遇到的报错信息如下。
网页错误详细信息 用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 721; InfoPath.2) 时间戳: Fri, 8 Jun 2012 04:59:50 UTC 消息: 'window.G_vmlCanvasManager' 为空或不是对象 行: 698 字符: 17 代码: 0 URI: http://localhost:8080/chart/jquery.flot.js
解决G_vmlCanvasManager未定义错误
虽然不清楚'window.G_vmlCanvasManager'的具体含义,但经查询得知,该报错是因为未导入必要的兼容脚本所致。
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../excanvas.min.js"></script><![endif]-->
此前曾提及,不同浏览器采用的绘图机制存在差异,Flot插件正是根据浏览器类型调用不同的绘图方式,其原理类似于Hibernate框架。
修复饼图内部标签绘制失败问题
随后又出现了另一个报错。
Could not draw pie with labels contained inside canvas
代码看似正确却报错,这确实令人困惑。查阅Demo后发现,绘图所在的DIV必须引入特定的CSS样式。若未引入该样式,由于DIV尺寸不确定,导致无法正确进行绘图。
因此,需要为绘图容器增加相应的样式定义。
<style type="text/css">
* {
font-family: sans-serif;
}
body
{
padding: 0 1em 1em 1em;
}
div.graph
{
width: 400px;
height: 300px;
float: left;
border: 1px dashed gainsboro;
}
</style>
接着处理DIV的结构。
<div id="graph1" class="graph"></div>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
anime.js 快速入门:怎么引入库并编写第一个 DOM 动画
2026-11-05 14:22:43
在线JS解密后变量名仍乱码?结合浏览器DevTools调试还原
2026-11-04 20:26:01
怎么在浏览器中运行JavaScript代码并查看输出结果
2026-11-04 09:07:33
JS 获取屏幕分辨率:window.screen.width 与 height 用法
2026-11-04 08:52:48
为什么推荐用DOMContentLoaded代替window.onload初始化JS
2026-11-04 08:42:33
