2012-01-27 2 views
6

Позвольте мне спросить, можно ли загрузить javascript-код в html-файл во время выполнения. Например, поместите текстовое поле для ввода местоположения файлов сценариев и кнопки формы, чтобы вызвать загрузку файлов сценариев.Как загрузить javascript-код в html-файл во время выполнения?

Заранее спасибо.

ответ

15

Вставить это в OnClick этой кнопки (исправить URL в 3-й строке):

var script = document.createElement("script"); 
script.setAttribute("type", "text/javascript"); 
script.setAttribute("src", "url to the script file here"); 
document.getElementsByTagName("head")[0].appendChild(script); 

Этот скрипт начнет загружаться немедленно после выполнения строки 4, и как только он будет загружен, он будет выполнен или иным образом использоваться.

+2

Убедитесь, что имеется элемент головки. Если нет, добавление в тело тоже работает. Btw, +1 для прикрепления к чистому JavaScript, поскольку вопрос не помечен jQuery. –

+0

Что делать, если я добавлю два сценария с помощью этого метода? Будут ли они загружаться в одно и то же время или второй будет ждать первого? –

7

Да, jQuery getScript method делает это тривиально:

//on button click event: 
$.getScript(urlOfScript); 

В качестве альтернативы, используя только родные JavaScript методы:

//on button click event: 
var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = 'urlOfScript'; 
head.appendChild(script); 
1

Все хорошие ответы выше. Вы также можете загрузить js через ajax как любой другой фрагмент html. Краткое пример:

start.html

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
</head> 
<body> 
    <a href="#" onclick="$('#result').load('start.js'); return false;">start</a> 
    <div id="result"></div> 
</body> 
</html> 

start.js

<script type="text/javascript"> 
    alert('Hello world!'); 
</script> 

Вам не нужно JQuery для AJAX - я просто использовал его как быстрое доказательство концепции.

0

Здесь также используется метод jquery для достижения того же.

let src = 'http://www.example.com/dosome/afsddfa'; 
$('<script>').attr(
{ 
    src: src, 
    type: 'text/javascript' 
}).appendTo('body'); 

Он создаст элемент сценария и добавит его в тело.

Вы также можете использовать .appendTo('head').