Действительно ли возможно звонить в a .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 от другого сайта, что я не имею никакого контроля.
Мысли?
Править:
Я принял лучший ответ на данный момент, потому что он дает хорошее объяснение того, что продолжается. Но если у кого-либо есть какие-либо предложения для того, как улучшить это, я открыт для них. Вот пример того, что я хотел бы сделать.
// Include() is a custom function to import js.
Include('my1.js');
Include('my2.js');
myFunc1('blarg');
myFunc2('bleet');
Я просто хочу удержаться от необходимости знать внутренности слишком много и просто смочь сказать, "Я хочу использовать этот модуль, и теперь я буду использовать некоторый код от него".
Вы можете создать элемент