Ф@РТОВЫЙ Опубликовано 10 февраля, 2008 Жалоба Поделиться Опубликовано 10 февраля, 2008 Пишу онлайн приложение. Проблема в том, что все яваскрипты данного приложения весят болеет 1МБ, притом за один сеанс работы может использоваться только 5-10 функций из нескольких сотен. Появилась идея подгружать функции по мере их необходимости. В интернете нашел лишь следующее: document.write('<script src="file.js"></script>') Но document.write работает только до загрузки страницы, а мне надо после загрузки, по событию. Так не работает: document.body.innerHTML += '<script src="file.js"></script>'; ЗЫ: гарантировано что пользователи будут заходить только через IE6 или выше Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 11 февраля, 2008 Жалоба Поделиться Опубликовано 11 февраля, 2008 А пробувал... document.open(); document.write() document.close(); А насчеть InnerHTML, лучше через DOM (createElement, appendChild()), но и так не уверен что будеть работать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 11 февраля, 2008 Автор Жалоба Поделиться Опубликовано 11 февраля, 2008 Darhazer: document.open(); вобщето очищает документ. Если ток все перезаписывать, но это не есть хорошо. Насчет DOM то innerHTML это тоже конструкции DOM и следовательно не работает. Вобще-то у меня появилась идея, которая пока работает, но насколько она рабочая? Данные в моем приложении подгружаются в скрытом фрейме, который после полной загрузки передает содержимое тега body функции в родительском фрейме. Если в новой функции обработать полученые данные функцией eval() то все исполняется, функции добавляются. Но всегда ли будет это работать, есть ли какие либо конструкции, которые через eval() не проходят? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 11 февраля, 2008 Жалоба Поделиться Опубликовано 11 февраля, 2008 (изменено) Я имел ввиду так var script = document.createElement('script');script.type = 'text/javascript';script.src = 'script.js';document.getElementsByTagName('head')[0].appendChild(script); Ето на много лучше чем innerHTML += ... Должно работать, только можеть бит появиться проблем с асинхронном подключение и визов функции перед загрузки JS. Надо script.onload() добавить наверника Еще можно почитать здесь http://ajaxpatterns.org/On-Demand_Javascript Изменено 11 февраля, 2008 пользователем Darhazer Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти