Подключение Javascript

12-02-2011

Ниже представлены 3 javascript функции цель которых подключение javascript файлов. То есть они дают возможность подключения javascript файлов на лету

1. Функция include() эта функция будет просто подключать javascriptовый файл, без всяких извращений, используя функцию document.write():

function include(url) {
    
    document.write('<' + 'script');
    document.write(' language="javascript"');
    document.write(' type="text/javascript"');
    document.write(' src="' + url + '">');
    document.write('');
	
}

2. Функция include_inhead() функция подключает файл в тег head, а не где попало как это делает предыдущая функция, а также подключение происходит более правильным путем так как используется функция document.createElement:

function include_inhead(url) {
    
    var html_doc = document.getElementsByTagName('head').item(0);
    var js = document.createElement('script');
    
    js.setAttribute('language', 'javascript');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', url);
    html_doc.appendChild(js);
    
    return false;
	
}

3. Функция require_once() функция будет не просто подключать файл, а будет еще проверять его на подключенность, то есть аналог PHP функции rquire_once(). Для реализации такого эффекта нам во первых понадобится создать глобальный массив в котором будем записывать все включаемые файлы:

var included_files = new Array();

Дальше придется написать функцию которая будет проверять вхождение подключаемых файла в массив, то есть проверять на включенность:

function in_array(needle, haystack) {
    for (var i = 0; i < haystack.length; i++) {
        
		if (haystack[i] == needle) {
            
			return true;
			
        }
		
    }
	
    return false;
}

Дело осталось за малым, в конечной функции проверяем переданный url на включенность и подключаем его с помощью функции include_inhead() (2ая функция):

function require_once(url) {
    
	if (!in_array(url, included_files)) {
	
		included_files[included_files.length] = url;
		include_inhead(url);
		
    }
	
}
Блогер2.15.2011 09:02
А какое практическое применение данных методов можете описать? Заранее спасибо...
    admin2.16.2011 07:02
    допустим мне недавно понадобилась функция require_once(), нужно было после ajax запроса подключать js файл... причем если он уже подключен не подключать... чтоб при последующих запросах он заново не подключался...
Алексей12.7.2011 04:12
И что? Работает? Пробовал печатать на лету в документ, но толку было мало - менялось только DOM дерево (в нем появлялся код), но вот чтобы функцию из появившегося кода вызвать - так нет! В конце концов выход нашел, но он работает не через вставку кода в DOM...
Йазь12.15.2011 09:12
Лёх, лучше используй https://github.com/rgrove/lazyload/blob/master/lazyload.js или либу yepnope. Загрузить ты загрузишь, а вот callback надо запускать строго после готовности скрипта надо запускать. За нас уже всё написано давно ;)
ОСТАВИТЬ КОММЕНТАРИЙ