Как сделать так, чтобы моя функция JavaScript выполнялась только после загрузки всех внешних сценариев JavaScript?

Я разрабатываю WebPart в SharePoint, и мне нужно что-то нарисовать в моем WebPart, используя excanvas.js. Но иногда это ничего не показывает. Сообщение об ошибке:

Object doesn't support property or method 'getContext'

Когда я отлаживаю его, он ломается здесь:

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

"BackgroundId" - это идентификатор одного элемента canvas. Эта ошибка происходит не каждый раз, просто иногда, поэтому я думаю, что если моя 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 ответ

Решение

Вам нужно поместить его в обработчик готовых страниц. в противном случае во время выполнения javascript элемент может быть недоступен.
рассмотрите возможность использования jquery или другой библиотеки js для этого, если вы не можете использовать ее, вот ссылка на то, как использовать нативную версию js события onload

Другие вопросы по тегам