Можно ли синхронно вызывать файл .js
, а затем использовать его сразу после?
<script type="text/javascript">
var head = document.getElementsByTagName('head').item(0);
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', 'http://mysite/my.js');
head.appendChild(script);
myFunction(); // Fails because it hasn't loaded from my.js yet.
window.onload = function() {
// Works most of the time but not all of the time.
// Especially if my.js injects another script that contains myFunction().
myFunction();
};
</script>
Это упрощается. В моей реализации элемент createElement находится в функции. Я думал о добавлении чего-то к функции, которая могла бы проверить, была ли создана определенная переменная, прежде чем возвращать управление. Но тогда все еще есть проблема, что делать, если включить js с другого сайта, на который я не контролирую.
Мысли?
Edit:
Я принял лучший ответ, потому что он дает хорошее объяснение тому, что происходит. Но если у кого-то есть предложения по улучшению этого, я им открыт. Вот пример того, что я хотел бы сделать.
// Include() is a custom function to import js.
Include('my1.js');
Include('my2.js');
myFunc1('blarg');
myFunc2('bleet');
Я просто хочу не знать, что внутренности слишком много, и просто сказать: "Я хочу использовать этот модуль, и теперь я буду использовать какой-то код из него".