Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2015, 19:14
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

Как подгрузить код JS динамически?
Приветствую Вас Уважаемые форумчане!
Многие из Вас неоднократно помогали мне, надеюсь, что и сейчас вы не пройдете мимо)))

Я столкнулся со следующей проблемой:
Сайт который я пишу работает полностью динамически (без полной перезагрузки страницы), так вот, все запрошенное содержимое вставляется в страницу через свойство innerHTML, проблема в том, что это свойство не предназначено для того, чтобы через него вставлять JS код.
Я нашел выход, а именно:
Тот JS код, который подключается через внешний файл (к примеру file.js), я вырезаю из полученных данных и подключаю через createElement, остальное же содержимое добавляю через innerHTML.
Казалось бы проблема решена, но есть одно НО... Подгружаемые данные содержат не только внешние файлы JS, но и отдельный код JS, который вышеописанным способом не подключить.
Какие могут быть решения? Может быть, вырезать весь код из тега <script></scrip> и добавить через eval?
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2015, 19:23
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от zhurchik
Какие могут быть решения?
выкинуть костыли и использовать фреймворк для построения одностраничных веб приложений, потому что
Сообщение от zhurchik
Сайт который я пишу работает полностью динамически (без полной перезагрузки страницы)
это, по описанию, похоже именно на одностраничное веб приложение.
А вот это:
Сообщение от zhurchik
так вот, все запрошенное содержимое вставляется в страницу через свойство innerHTML, проблема в том, что это свойство не предназначено для того, чтобы через него вставлять JS код.
похоже на то, что вы пишете фреймворк для одностраничника заново, с нуля. не надо
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2015, 19:37
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

melky,
Нет, это не одностраничка.
Я использую хистори API для того, чтобы у пользователя создавалось впечатление будто бы он перемещается физически, ко всему этому, если отключен JS то все равно все ссылки работают (сделано это для поисковиков). Сайт имеет много разделов, личную переписку, чат, форму и т.д.

Вообще, 100% динамику я реализовал для того, чтобы можно было слушать музыку, перемещаться по сайту и слушать музыку. Да и вообще удобно.

Я не использую ни фрейворки, ни библиотеки в проекте, сайт полностью самописный!

Если Вы считаете, что мой способ подключать JS код - костыль, тогда что не костыль? По какому принципу эти фрейворки работают в этом плане?

Последний раз редактировалось zhurchik, 01.02.2015 в 19:43.
Ответить с цитированием
  #4 (permalink)  
Старый 01.02.2015, 19:50
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от zhurchik
Если Вы считаете, что мой способ подключать JS код - костыль, тогда что не костыль? По какому принципу эти фрейворки работают в этом плане?
JS код не грузится динамически через HTML. у них он загружается сразу весь, через обычный <script> в HTML
Ответить с цитированием
  #5 (permalink)  
Старый 01.02.2015, 19:56
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

melky,
У меня код тоже не грузится через innerHTML! Перед тем как вставить данные в innerHTML я вырезаю оттуда теги <script> а из них вырезаю полный путь до js файла и затем вставляю через createElement.
Я не хочу сразу подключать все файлы через в заголовке <head> т.к. какие то файлы отвечают за галерею, какие то за плеер, а пользователь зайдя на сайта может ни разу ни галереею не открыть, ни плеер, а зачем тогда лишний код JS Загружать?
Так и на сервер меньше нагрузка и на клиентский ПК и трафик меньше.

Проблема описанная в теле темы ещё актуальна)))
Ответить с цитированием
  #6 (permalink)  
Старый 01.02.2015, 20:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,891

Сообщение от zhurchik
Казалось бы проблема решена, но есть одно НО... Подгружаемые данные содержат не только внешние файлы JS, но и отдельный код JS, который вышеописанным способом не подключить.
Отчего же... См. второй способ.
http://www.manhunter.ru/webmaster/28...tran icu.html
Ответить с цитированием
  #7 (permalink)  
Старый 01.02.2015, 23:15
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

ksa,
То-есть, это нормально когда в созданный через createElement тег script вписываются код JS строкой? Это чем-то похоже на eval.
Вообще такое приемлемо или это костыль?
Ответить с цитированием
  #8 (permalink)  
Старый 01.02.2015, 23:48
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,563

Мой маленький велосипед
Ответить с цитированием
  #9 (permalink)  
Старый 02.02.2015, 09:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,891

Сообщение от zhurchik
Вообще такое приемлемо или это костыль?
Для динамической подгрузки имеено js-текста больше ничего нет вообще.
Т.ч. как не назови, это можно сделать только такими способами...
Ответить с цитированием
  #10 (permalink)  
Старый 02.02.2015, 09:58
Кандидат Javascript-наук
Отправить личное сообщение для zhurchik Посмотреть профиль Найти все сообщения от zhurchik
 
Регистрация: 04.06.2011
Сообщений: 116

Poznakomlus,
Разве задавать атрибуты в тег "<script>", типа "data-*" и прочих, разрешено?

Какая-то часть кода пригодилась, спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 11:29
Аккордеон меню, как доработать код. Gawk Общие вопросы Javascript 1 23.07.2012 12:01
Запуск кода с фрейма, код в родительском окне - КАК ? lamer Javascript под браузер 7 06.05.2012 14:15
Как по событию подгрузить код из другого файла? jelome Элементы интерфейса 2 30.06.2011 08:58
Как в зависимости от результатов диалогового окна на JS выполнить PHP-скрипт? RuCosinus Общие вопросы Javascript 1 25.05.2011 09:13