Как программно подключить JavaScript?

2010-04-28

Как известно, на сегодняшний день в javascript нету функции или директивы для подключения других js-скриптов, как к примеру include, request или use, которые есть в PHP, C++, Pascal и многих других языках. Неужели никак невозможно решить эту проблему?

Возможно!
Это делается средствами DOM-структуры HTML-документа.
Идея такая: мы каким-то образом в реальном времени создаем элемент <script /> и назначаем ему атрибут src со значением, которое представляет собой путь к подключаемому скрипту.

Проще всего это сделать с помощью document.write:
Пример:

// По умолчанию английский файл
var mySrc = "en_contants.js";
// Если в строке "userAgent" браузера
// нашлась метка о том, что он русский,
// то целесообразно подключить русский файл
if(navigator.userAgent.indexOf("ru;") > -1) {
mySrc = "ru_contants.js";
}
// Подключение
document.write(unescape("%3Cscript src='/js/"+mySrc+" type='text/javascript'%3E%3C/script%3E"));

Этот метод сработает только при старте страницы, то-есть когда выполнится document.write. Но этим методом не получиться подключить скрипт, к примеру, по нажатию кнопки.
В этом случае нам нужно создать DOM-элемент. Конечно можно сделать всё это на чистом яваскрипте и данный фрагмент кода может растянутся на 10-15 строк, главное знать принцип.

Я же использую для этих целей jQuery, чего и Вам советую.
Она содержит простой и замечательный метод:

$.getScript(url, callback);

url — путь к подгружаемому скрпипту;
callback (необязательный параметр) — функция, которая выполнится по завершению загрузки/подключения скрипта.

Внимание: Разработчики библиотеки предупреждают, что в Safari версии 2 и ниже могут возникнуть проблемы с выполнением callback-функции связанные с синхронностью операций. Вы должны убедится, что подключенные функции вызываются позже.



Добавить комментарий