Подгрузка и исполнение JavaScript из внешнего файла (AJAX)

porsche2

Мой дом здесь!
Регистрация
18 Ноя 2007
Сообщения
669
Реакции
234
JS для меня далекий друг, поэтому прощу помощи, желательно квалифицированной ))

Задача: Разместить все JS-скрипты в одном файле, чтобы потом содержимое этого файла подгружать[быстро менять/исчезает необходимость пихать скрипты в шаблон и шаблонизатор].

С выводом текста проблем не возникло:

HTML:
<script type="text/javascript" language="javascript">
function getXmlHttp() {
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}
(function () {
    var xmlhttp = getXmlHttp();
    xmlhttp.open('GET', '../scripts.html', false);
    xmlhttp.send(null);
    if (xmlhttp.status == 200) {
        document.getElementById("foot").innerHTML = xmlhttp.responseText;
 // Содержимое файла scripts.html выводим внутри элемента c id = foot.
    }
})();
</script>

Но, по естественным причинам, javascript не исполняется.

Вопрос, что нужно дописать, чтобы скрипты исполнялись, т.е. получить аналог SSI но при помощи JavaScript (библиотеки не используются, совсем).

P.S. SSI и Frame не предлагать.
 
функция eval исполняет
Код:
eval(xmlhttp.responseText);
так если надо подключить файл яваскрипта может так подойдёт добавить в head
HTML:
<head>
<script type="text/javascript" src="../scripts.html"></script>
</head>
и в файле выполнять скрипт когда загрузится
Код:
function init(){
    //код
}
window.onload = init;
 
что бы выполнялся подгружаемый js
не надо в него включать тега
<script type="text/javascript" language="javascript">
 
  • Заблокирован
  • #4
porsche2,
Если не поленитесь потратить часа 2-3 на чтение данной книжки, то сделаете такие вещи сами:
 
Speec, jQuery, это библиотека, а у меня библиотеки не используются, я об этом в первом посте написал.
 
Вам правильно подсказали решение выше.
Используйте eval для работы с подгружаемым js.
замените строку
HTML:
document.getElementById("foot").innerHTML = xmlhttp.responseText;
на этот код

HTML:
        eval(xmlhttp.responseText);
		aaa('---------');
		alert('вау');
		aaa('=======');

а scripts.html
сделайте такого содержания
HTML:
function aaa(v)
{
alert('qweqwe'+v);
}

и наслаждайтесь эффектом. ;)
 
Самый простой вариант ( и пожалуй единственный ) - это прописать javascript в файле, который грузиться с html страницей ( скажем function.js ), в функцию скажем afterAjaxLoad, и при загрузке контента через ajax выполнять эту функцию
 
Назад
Сверху