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

Я разрабатываю 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 Ответ

1 голос
/ 05 февраля 2012

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

...