01.02.2015, 20:14
|
Кандидат Javascript-наук
|
|
Регистрация: 04.06.2011
Сообщений: 116
|
|
Как подгрузить код JS динамически?
Приветствую Вас Уважаемые форумчане!
Многие из Вас неоднократно помогали мне, надеюсь, что и сейчас вы не пройдете мимо)))
Я столкнулся со следующей проблемой:
Сайт который я пишу работает полностью динамически (без полной перезагрузки страницы), так вот, все запрошенное содержимое вставляется в страницу через свойство innerHTML, проблема в том, что это свойство не предназначено для того, чтобы через него вставлять JS код.
Я нашел выход, а именно:
Тот JS код, который подключается через внешний файл (к примеру file.js), я вырезаю из полученных данных и подключаю через createElement, остальное же содержимое добавляю через innerHTML.
Казалось бы проблема решена, но есть одно НО... Подгружаемые данные содержат не только внешние файлы JS, но и отдельный код JS, который вышеописанным способом не подключить.
Какие могут быть решения? Может быть, вырезать весь код из тега <script></scrip> и добавить через eval?
|
|
01.02.2015, 20:23
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от zhurchik
|
Какие могут быть решения?
|
выкинуть костыли и использовать фреймворк для построения одностраничных веб приложений, потому что
Сообщение от zhurchik
|
Сайт который я пишу работает полностью динамически (без полной перезагрузки страницы)
|
это, по описанию, похоже именно на одностраничное веб приложение.
А вот это:
Сообщение от zhurchik
|
так вот, все запрошенное содержимое вставляется в страницу через свойство innerHTML, проблема в том, что это свойство не предназначено для того, чтобы через него вставлять JS код.
|
похоже на то, что вы пишете фреймворк для одностраничника заново, с нуля. не надо
|
|
01.02.2015, 20:37
|
Кандидат Javascript-наук
|
|
Регистрация: 04.06.2011
Сообщений: 116
|
|
melky,
Нет, это не одностраничка.
Я использую хистори API для того, чтобы у пользователя создавалось впечатление будто бы он перемещается физически, ко всему этому, если отключен JS то все равно все ссылки работают (сделано это для поисковиков). Сайт имеет много разделов, личную переписку, чат, форму и т.д.
Вообще, 100% динамику я реализовал для того, чтобы можно было слушать музыку, перемещаться по сайту и слушать музыку. Да и вообще удобно.
Я не использую ни фрейворки, ни библиотеки в проекте, сайт полностью самописный!
Если Вы считаете, что мой способ подключать JS код - костыль, тогда что не костыль? По какому принципу эти фрейворки работают в этом плане?
Последний раз редактировалось zhurchik, 01.02.2015 в 20:43.
|
|
01.02.2015, 20:50
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от zhurchik
|
Если Вы считаете, что мой способ подключать JS код - костыль, тогда что не костыль? По какому принципу эти фрейворки работают в этом плане?
|
JS код не грузится динамически через HTML. у них он загружается сразу весь, через обычный <script> в HTML
|
|
01.02.2015, 20:56
|
Кандидат Javascript-наук
|
|
Регистрация: 04.06.2011
Сообщений: 116
|
|
melky,
У меня код тоже не грузится через innerHTML! Перед тем как вставить данные в innerHTML я вырезаю оттуда теги <script> а из них вырезаю полный путь до js файла и затем вставляю через createElement.
Я не хочу сразу подключать все файлы через в заголовке <head> т.к. какие то файлы отвечают за галерею, какие то за плеер, а пользователь зайдя на сайта может ни разу ни галереею не открыть, ни плеер, а зачем тогда лишний код JS Загружать?
Так и на сервер меньше нагрузка и на клиентский ПК и трафик меньше.
Проблема описанная в теле темы ещё актуальна)))
|
|
01.02.2015, 21:15
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от zhurchik
|
Казалось бы проблема решена, но есть одно НО... Подгружаемые данные содержат не только внешние файлы JS, но и отдельный код JS, который вышеописанным способом не подключить.
|
Отчего же... См. второй способ.
http://www.manhunter.ru/webmaster/28...tran icu.html
|
|
02.02.2015, 00:15
|
Кандидат Javascript-наук
|
|
Регистрация: 04.06.2011
Сообщений: 116
|
|
ksa,
То-есть, это нормально когда в созданный через createElement тег script вписываются код JS строкой? Это чем-то похоже на eval.
Вообще такое приемлемо или это костыль?
|
|
02.02.2015, 00:48
|
|
Профессор
|
|
Регистрация: 13.03.2013
Сообщений: 1,572
|
|
|
|
02.02.2015, 10:52
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от zhurchik
|
Вообще такое приемлемо или это костыль?
|
Для динамической подгрузки имеено js-текста больше ничего нет вообще.
Т.ч. как не назови, это можно сделать только такими способами...
|
|
02.02.2015, 10:58
|
Кандидат Javascript-наук
|
|
Регистрация: 04.06.2011
Сообщений: 116
|
|
Poznakomlus,
Разве задавать атрибуты в тег "<script>", типа "data-*" и прочих, разрешено?
Какая-то часть кода пригодилась, спасибо!
|
|
|
|