Я разделил свой javascript в разных файлах. Я хочу предотвратить, что файлы javascript загружаются дважды. Как я могу это сделать?
Как я могу проверить, был ли уже включен JS файл?
Ответ 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, который поможет вам организовать ваши файлы.