Проверить в javascript, загружен ли es5-shim.js или нет? Это для ie8

Есть ли способ определить, если

https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.0/es5-shim.js

от

https://cdnjs.com/libraries/es5-shim

загружается или нет?

Для AngularJS вы можете проверить javascript:

if(!window.angular){
//not loaded
}

Каков правильный способ сделать это для шима?

Спасибо.


person Haradzieniec    schedule 08.04.2015    source источник
comment
просто поместите блок <!--[if lt IE 9]> перед вашим скриптом и не загружайте скрипты асинхронно, тогда он должен быть загружен перед вашим.   -  person YOU    schedule 08.04.2015


Ответы (3)


Пытаться

<!--[if lt IE 9]>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.0/es5-shim.js"></script>
<script>String.prototype.trim || document.write('<script src="/js/es5-shim.js"><\/script>')</script>
<![endif]-->

или дайте мне знать, если это не работает.

person YOU    schedule 08.04.2015

Не стоит проверять наличие прокладки. Идея использования прокладки заключается в том, что вы хотите использовать определенные методы, например. Object.keys. Когда эти методы изначально недоступны, ваша оболочка добавляет их к рассматриваемому глобальному объекту, и ваш код не замечает разницы.

Можете ли вы уточнить, почему вам нужно знать, что он загружен?

person Ben Drucker    schedule 08.04.2015
comment
это для IE8. Если он по какой-то причине не загружается для IE8 из CDN, то его следует загрузить из локального. - person Haradzieniec; 08.04.2015
comment
В этом случае вам следует взглянуть на ответ @Raishul или рассмотреть возможность использования специального загрузчика сценариев, который автоматически обработает резервный вариант для вас. - person Ben Drucker; 09.04.2015

Пожалуйста, следуйте разделу обновления принятого ответа на следующий вопрос SO:

Как определить, загружены ли файлы javascript?

Ниже приводится его решение (все заслуги принадлежат TJ Crowder):

function loadScript(path, callback) {

    var done = false;
    var scr = document.createElement('script');

    scr.onload = handleLoad;
    scr.onreadystatechange = handleReadyStateChange;
    scr.onerror = handleError;
    scr.src = path;

    function handleLoad() {
        if (!done) {
            done = true;
            callback(path, "ok");
        }
    }

    function handleReadyStateChange() {
        var state;

        if (!done) {
            state = scr.readyState;
            if (state === "complete") {
                handleLoad();
            }
        }
    }
    function handleError() {
        if (!done) {
            done = true;
            callback(path, "error");
        }
    }
}

person Raishul    schedule 08.04.2015