我正在SharePoint中开发一个WebPart,我需要使用excanvas.js在我的WebPart中绘制一些内容。但有时它什么也没有显示。错误信息是:
Object doesn't support property or method 'getContext'
当我调试它时,它会在这里打破:
var ctxBg = document.getElementById(backgroundId).getContext("2d");
“backgroundId”是一个canvas元素的id。 这个错误不是每次都发生,有时候,所以我想如果我的js函数在加载excanvas.js之前执行。我用代码注册excanvas.js:
this.Page.ClientScript.RegisterClientScriptInclude("ExCanvasJs", "wpresources/MyWebPart/js/excanvas.js");
那么如何确保我的函数在加载excanvas.js后执行?或者我在这个问题上错了?你能给我你的建议吗?
我的js功能:
function DrawMeter(meter, contextCollection) {
var backgroundId = meter.meterbackground;
var pointerId = meter.meterpointer;
var containerId = meter.metercontainer;
if (contextCollection != null && contextCollection.length > 0) {
for (var i = 0; i < contextCollection.length; i++) {
DrawSingleMeter(backgroundId + "_" + i, pointerId + "_" + i, containerId + "_" + i, contextCollection[i]);
}
}
function DrawSingleMeter(backgroundId, pointerId, containerId, context) {
var ctxBg = document.getElementById(backgroundId).getContext("2d");
var ctxPointer = document.getElementById(pointerId).getContext("2d");
drawing...
}
答案 0 :(得分:1)
您需要将其放入页面就绪处理程序中。否则在执行javascript时元素可能尚未可用。
考虑使用jquery或其他js库,如果你不能在这里使用它是link on how to use the native js version of the onload event