Спасибо ... но jQuery не вариант.
держиваю устаревшее приложение javascript, компоненты которого разделены на 4 файла JS.
Это «Default.aspx», «set1.aspx», «set2.aspx» и «set3.aspx». Страницы ASPX записывают сжатый JS из нескольких (совершенно разных) исходных файлов, принадлежащих их соответствующему набору, и устанавливают заголовок типа контента «text / javascript».
Приложение вызывается путем добавления ссылки на первый набор и создания объекта основного входа.
<script src="/app/default.aspx" type="text/javascript"></script>
<script type="text/javascript>
var ax;
// <body onload="OnLoad()">
function OnLoad() {
ax = new MyApp(document.getElementById("axTargetDiv"));
}
</script>
В конце первого набора скриптов (default.aspx) следующийточный код:
function Script(src) {
document.write('<script src="' + src + '" type="text/javascript"></script>');
}
Script("set1.aspx?v=" + Settings.Version);
Который загружает второй набор скриптов (set1.aspx). И это работает без каких-либо ошибок во всех основных браузерах (IE6-8 Firefox Safari Opera Chrome).
Однако, поскольку я некоторое время работал над этим сценарием, я хотел бы упростить вызовы функций во многих местах и по ошибке вставил указанную выше функцию Script, что привело бы к следующему коду:
document.write('<script src="set1.aspx?v=' + Settings.Version + '" type="text/javascript"></script>');
Который при тестировании с тестовой страницей теперь выдает следующую ошибку во всех браузерах:
MyApp is not defined.
Это происходит на линии:ax = new MyApp(...
как отладчик Visual Studio JSа также Firebug сообщает об этом.
Я пробовал разные методы в первых 4 ответах на этот вопрос, но безрезультатно. Единственное, что позволит MyApp успешно загружаться, - это только вставив фактический код «add script» в функцию (т.е.document.write('script')
линия):
Если я поставлюdocument.write
строка внутри функции, это работает, в противном случае это не так. Что происходит?
Разделение и / или экранирование текста скрипта не работает.