Загрузка другого скрипта из файла Javascript, но я не могу получить доступ к функциям в загруженном скрипте

Я пытаюсь загрузить файл, используя следующий код, в файл, который я назвал InterpolatorTest.js:

include("scripts/ProceduralContentGeneration/NoiseGeneration/Interpolation/Interpolator.js");

var interpolator = new OneDimensionalInterpolatorTemplate();

Это код включения, который загружается в заголовке каждой страницы:

function include(scriptName) {
 var script = document.createElement('script');
 script.type = "text/javascript";
 script.src = scriptName;
 document.getElementsByTagName("head")[0].appendChild(script);
}

И это сценарий, который я пытаюсь включить, Interpolator.js:

OneDimensionalInterpolatorTemplate = function() {

}

Однако, когда я пытаюсь загрузить скрипт, я получаю следующую ошибку:

Uncaught ReferenceError: OneDimensionalInterpolatorTemplate is not defined --- InterpolatorTest.js:3

Он, похоже, не может получить доступ к методам загруженного скрипта, но он не дает мне ошибку 404, поэтому я предполагаю, что он загружает сценарий успешно. Я использовал этот скрипт раньше с успехом.

Это фактический код для страницы:

<title>Page Title</title>

Я работаю над этим часами, и я полностью в тупике. Кто-нибудь знает, что случилось?

Редактировать: Благодаря ответу от Alberto Zaccagni, я получил его работу, установив jQuery и используя этот фрагмент кода. Проблема заключается в том, что Javascript загружает файлы асинхронно, поэтому я пытался вызвать метод до его загрузки. AJAX имеет метод синхронной загрузки, что устраняет проблему. :)

1 ответ

Я думаю, что вам не хватает бит onload, посмотрите на этот вопрос: как включить файл JavaScript в другой файл JavaScript?

Я включаю соответствующий фрагмент в качестве ссылки:

function loadScript(url, callback)
{
 // Adding the script tag to the head as suggested before
 var head = document.getElementsByTagName('head')[0];
 var script = document.createElement('script');
 script.type = 'text/javascript';
 script.src = url;

 // Then bind the event to the callback function.
 // There are several events for cross browser compatibility.
 script.onreadystatechange = callback;
 script.onload = callback;

 // Fire the loading
 head.appendChild(script);
}

licensed under cc by-sa 3.0 with attribution.