Чи можна .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');
Я просто хочу уникнути того, щоб занадто знати внутрішні органи, і просто можу сказати: "Я хочу використовувати цей модуль, і тепер я буду використовувати якийсь код з нього".
eval()
кожен файл у вказаному порядку, інакше просто зберігайте відповідь).