Как я могу проверить, был ли уже включен JS файл?

Я разделил свой javascript в разных файлах. Я хочу предотвратить, что файлы javascript загружаются дважды. Как я могу это сделать?

Ответы

Ответ 1

Здесь показан тест, чтобы увидеть, включен ли script на основе пути к файлу js:

function isScriptAlreadyIncluded(src){
    var scripts = document.getElementsByTagName("script");
    for(var i = 0; i < scripts.length; i++) 
       if(scripts[i].getAttribute('src') == src) return true;
    return false;
}

Он будет работать для всех сценариев, не загружаемых через AJAX, хотя вы можете изменить его, если у вас запущен jsonp-код.

Ответ 2

Не включайте их дважды. В конце концов, вы, кто занимается этим, включили.

Если вы делаете эти включения динамически, вы можете проверить, была ли установлена ​​какая-либо глобальная функция или объект с помощью script. Например, если у меня есть script ниже в файле:

Foo = function () {};

И затем я включаю его вот так:

<script src="../foo.js"></script>

До этого тег script анализируется браузером, Foo - undefined. После обработки тега Foo является Function. Вы можете использовать некоторую логику, основанную на этом, чтобы определить, следует ли включать какой-либо файл или нет.

Ответ 3

Не используя какую-либо фреймворк (я знаю), вы можете сделать это, только проверив, объявлена ​​ли какая-либо переменная в глобальной области видимости.

Вы можете объявить переменную var include1 = true; внутри include1.js и сделать что-то вроде

if (window.include1 !== true) {
    // load file dynamically
}

Ответ 4

Вам нужно будет вручную отследить это и убедиться. Предложение UweB также будет работать.

Вы также можете проверить Require.js, который поможет вам организовать ваши файлы.