Загрузка другого скрипта из файла 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.