簡體   English   中英

如何確保我的javascript函數僅在所有外部javascript加載后才執行?

[英]How to ensure my javascript function only executes after all external javascripts are loaded?

我正在SharePoint中開發WebPart,需要使用excanvas.js在WebPart中繪制一些內容。但是有時它什么也沒顯示。錯誤消息是:

Object doesn't support property or method 'getContext'

當我調試它時,它在這里中斷:

var ctxBg = document.getElementById(backgroundId).getContext("2d");

“ backgroundId”是一個畫布元素的ID。 這個錯誤並非每次都發生,只是有時,所以我想如果我的js函數在加載excanvas.js之前執行了。我用以下代碼注冊excanvas.js:

this.Page.ClientScript.RegisterClientScriptInclude("ExCanvasJs", "wpresources/MyWebPart/js/excanvas.js");

那么如何確保在我的exanvas.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...

}

您需要將其放入頁面就緒處理程序中。 否則,在執行javascript時,該元素可能尚不可用。
考慮使用jquery或其他js庫,如果您不能使用它,這是有關如何使用onload事件的本機js版本的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM