Динамическая загрузка CSS и JavaScript с использованием Prototype - PullRequest
0 голосов
/ 14 мая 2010

У меня есть классическое приложение ASP, которое я постоянно пытаюсь модулировать. В настоящее время почти все страницы разделены на две страницы:

  • внешняя страница, которая содержит макет, заголовок, боковую панель, нижний колонтитул
  • внутренняя страница, содержащая код ASP

На внешних страницах используются шаблоны Dreamweaver, поэтому обновление макета и репликация изменений очень просты. Внутренние страницы управляются мной. Теперь вот проблема:

Мне пришлось добавить лайтбокс на одну страницу, я выбрал лайтбокс 2, для которого требуется Prototype. В итоге я добавил Prototype на каждую страницу, предполагая, что рано или поздно я обновлю все страницы, формы, запросы ajax и другой javascript для использования Prototype. Теперь я добавил два других плагина - Modalbox и Protofade; каждый с парой файлов .JS и .CSS. Поскольку я буду использовать эти три плагина на определенном наборе страниц, мне интересно, могу ли я динамически загружать необходимые файлы CSS и JS. Я не хочу получать доступ к заголовку документа и добавлять туда включаемые файлы (т. Е. Путем раздувания тега <head> с дюжиной тегов <script> и <link>), мне придется делать это изнутри DIV, где все ASP-код должен идти.

1 Ответ

1 голос
/ 14 мая 2010

Вы можете добавлять сценарии динамически, добавляя элементы script в документ; подробности и пример кода на этой странице из неофициального прототипа & script.aculo.us wiki. E.g.:

var element;
var script;

element = /* ...grab the element you want to add to; I'd use $$('head')[0] */;
if (element) {
    script = new Element('script', { type: 'text/javascript', src: 'dynamic.js' });
    element.appendChild(script);
}

Добавление ссылок на таблицы стилей должно быть практически одинаковым. Хотя вы добавили эту страницу к head, вы сказали, что не хотите этого делать (хотя я не понимаю, почему нет, поскольку вы делаете это динамически на компьютере пользователя), но она должна по-прежнему работают независимо от того, где вы их добавили.

...