尽管在加载事件中执行,但 excanvas 拒绝在 IE8 中工作

excanvas refusing to work in IE8 despite executing in load event

if(/MSIE (\d+\.\d+); /.test(navigator.userAgent)) {
  var foo = document.getElementById('herd-reports-report-table-div');
  var c = document.createElement('canvas');
  c.setAttribute("width",800);
  c.setAttribute("height",400);
  c.setAttribute("class","mapping");
  foo.appendChild(c);
  c = G_vmlCanvasManager.initElement(c);
} else {
  var c = document.getElementById('herd-report-chart-canvas');
}
var context = c.getContext('2d');

假设我在加载页面时在一个函数中执行这段代码,我需要构建一个图表。我包含了 excanvas,但它不起作用。 IE8 在最后一行抛出错误。我得到的只是 appendChild 步骤中的 "null" 错误。或者我得到 "Object is not supported by this property or method".

我已经无计可施了。我需要这个 canvas 才能在 IE8 中工作。不知何故。

所以我最终找到了解决它 (getContext) 不起作用的原因。一些事情

  • 我对包含 excanvas 的条件评论不正确。
  • 除此之外,我的 chart.js 不支持对 canvas 元素调用的某些函数,因此对 excanvas.js 的更新解决了该问题。
  • 我现在所有的东西都在加载,所以这个问题也解决了。