Javascript для загрузки другого js-файла

Я пытаюсь загрузить другой JS-файл из JS-файла.

Из моего JavaScript файла документа . write ( "<script type = 'text / javascript' src = 'my_script.js'> </ script>" ); alert ( nImages ); , У меня есть следующее:

<SCRIPT language="JavaScript" type="text/javascript">
<!--
nImages = 6;
//-->
</SCRIPT>

В стороне nImages у меня есть следующее:

var script = document.createElement('script');
script.src = 'my_script.js';
script.type = 'text/javascript';

script.onload = function () {
    alert(nImages);
};

document.getElementsByTagName('head')[0].appendChild(script);

Но я не могу показаться , чтобы получить его , чтобы предупредить от = языка «JavaScript» файл.nImages = 6;

javascript,

1

Ответов: 4


4

Вы можете сделать это:

<!--

3

Вы не должны использовать HTML внутри вашего файла сценария. Ваш файл сценария // -> должен содержать только это.

document.write()

Дополнительное примечание: вам не нужно или или . Это старые соглашения, которые не нужны для современных браузеров (даже IE6). Я бы также избегал использования в вашем JS, так как он имел последствия для производительности. Возможно, вам захочется взглянуть на библиотеку, такую ??как RequireJS, которая обеспечивает лучший способ загрузить другие JS-файлы на странице.var theOtherScript = 'http://example.com/js/script.js'; var el = document.createElement('script'); el.async = false; el.src = theOtherScript; el.type = 'text/javascript'; (document.getElementsByTagName('HEAD')[0]||document.body).appendChild(el);so my_script.jsnImages = 6;run.js

У меня также есть фрагмент кода на Github, вдохновленный Стивом Соудерсом, который загружает другой файл через прямой JS.

my_script.js

Это добавит другой скрипт к элементу (если он существует) или к странице.


0

Файлы Javascript не должны содержать HTML. Они должны состоять полностью из кода Javascript, nImagesдолжны содержать только:

document.write("<script type='text/javascript' src='my_script.js'></script>");

function call_on_load(){
    alert(nImages);
}

Это все равно не будет работать, потому что, когда вы пишете новый тег сценария в документе, он не запускается немедленно. Гарантируется, что он run.jsзаканчивается перед запуском my_script.js, поэтому my_script.jsон не определен, когда вы его предупреждаете, а затем становится 6 позже. Вы увидите, что это работает:

nImages = 6;
call_on_load();

Если содержание my_script.js:

my_script.js

редактировать

Поскольку вы сказали в комментарии, что вы не можете редактировать, my_script.jsвы можете это сделать, хотя это не так приятно, как решение:

// Force nImages to be undefined
var undefined;
window.nImages = undefined;

document.write("<script type='text/javascript' src='my_script.js'></script>");

(function is_loaded(cb){
    if(typeof window.nImages == 'undefined')
        setTimeout(function(){ is_loaded(cb); }, 100);
    else
        cb();
})(function(){
    // This is executed after the script has loaded
    alert(nImages);
});

Однако это не очень хорошее решение, так как он будет продолжать опрос неограниченно, если при загрузке скрипта произошла ошибка.

РЕДАКТИРОВАТЬ

Вы отправили в комментарий файл, который хотите включить, который находится <SCRIPTсверху. Этот файл бесполезен, и вы не можете ничего сделать с ним на стороне клиента. Вам нужно будет написать сценарий на стороне сервера, чтобы загрузить файл в виде текста, и в этом случае вы можете просто проанализировать его для нужного значения.


-1

Использование ajaxme.js :

В html:

<script src="/js/ajaxme/dist/ajaxme.js"></script>

В JS:

ajaxme.get({url:'myscript.js',success:function(r){eval(r.response)}})
JavaScript,
Похожие вопросы