Поиск экземпляра 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.

IDevice Question Icon Контрольный вопрос
В какой момент браузеру предоставляется реализация API?   
Каждый раз, когда происходит соединение с LMS.
В момент первого соединения с LMS, далее эта реализация хранится на протяжении всего сеанса работы с LMS.
Браузер самостоятельно определяет, когда именно получать реализацию API от LMS.