如何确保我的javascript函数只在加载所有外部javascripts后执行?

时间:2012-02-05 11:08:39

标签: javascript sharepoint excanvas

我正在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...

}

1 个答案:

答案 0 :(得分:1)

您需要将其放入页面就绪处理程序中。否则在执行javascript时元素可能尚未可用。
考虑使用jquery或其他js库,如果你不能在这里使用它是link on how to use the native js version of the onload event