Поиск экземпляра API
Поиск реализации API – это также вполне стандартная процедура. Реализуется она следующими функциями – getAPIHandle(); getAPI(); findAPI(win);
function getAPIHandle()
{
if (apiHandle == null)
{
apiHandle = getAPI();
}
return apiHandle;
}
function getAPI()
{
var theAPI = findAPI(window);
if ((theAPI == null) && (window.opener != null) && (typeof(window.opener) != "undefined"))
{
theAPI = findAPI(window.opener);
}
if (theAPI == null)
{
alert(UNABLE_TO_FIND_AN_API_ADAPTER);
}
return theAPI
}
function findAPI(win)
{
while ((win.API == null) && (win.parent != null) && (win.parent != win))
{
findAPITries++;
//Примечание: 7 - это случайное число, однако этого количества попыток должно быть более чам достаточно
if (findAPITries > 7)
{
alert(ERROR_FINDING_API_TOO_DEEPLY_NESTED);
return null;
}
win = win.parent;
}
return win.API;
}
Как можно понять, изучив эти функции, конкретная реализация API запускается самим браузером. Именно браузер и является тем самым объектом «window», который передаётся как параметр в функцию «findAPI(win)». Таким образом, браузер - это родительский объект по отношению к объекту, который содержит реализацию API. Файлы, которые являются реализацией API в конкретной LMS-системе, передаются браузеру от LMS тем же путём, что и сам обучающий контент – то есть непосредственно в момент соединения браузера клиента с сервером, на котором находится LMS-система. Далее эта реализация хранится на клиенте в течение всего сеанса работы с LMS.
Каждый раз, когда происходит соединение с LMS. | |
В момент первого соединения с LMS, далее эта реализация хранится на протяжении всего сеанса работы с LMS. | |
Браузер самостоятельно определяет, когда именно получать реализацию API от LMS. |