Форум программистов, компьютерный форум, киберфорум
and_y87
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Динамическое подключение .JS & .CSS с кешированием и без

Запись от and_y87 размещена 12.03.2014 в 17:22
Показов 3962 Комментарии 0

Создал свою функцию подключения файлов теперь я могу:
подключить .JS & .CSS без приставки временной метки в заголовке Request URL


функция include() принимает объект.


Описание объекта:

type - Тип подключаемого файла
  • Default: script

root - Путь к папке содержаще подключаемые файлы
  • Default: в зависимости от type
  • script = '/js/'
  • link = '/css/'

target - Цель куда будет вставлен новый элемент
  • Default: head
Возможно использовать выборку первого элемента из списка по #id и по .class

cache* - Возможность отключить кеширование файла (при значении false кеширования не будет)
  • Default: true


Пример использования:
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
var
    list_js  = Array('live', 'next'),
    list_js2  = Array('next2'),
    list_css = Array('buttons', 'buttons2', 'buttons3');
 
function startInclude(){
 
    include({
        type    : 'link',
        list    : list_css,
        target  : 'head'
    });
 
    include({
        type    : 'script',
        list    : list_js,
        target  : 'body'
    });
 
    include({
        type    : 'script', // Тип вставки
        list    : Array('live', 'next'), // Массив имён файлов
        target  : '#body',              // Вставка скрипта в Элемент по ID
        cache  : false                 // Не кешировать скрипт
    });
 
    include({
        type    : 'script',  // Тип вставки
        list    : list_js2,  // Массив имён файлов
        target  : '.metka',  // Вставка скрипта в первый Элемент по заданному классу
        cache  : false
    });
 
};
 
document.body.onready = startInclude();


Код функции:
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
function include( data ) {
 
    var insert, item, cache,
        root   = data.root     || false ,
        type   = data.type     || 'script',
        target = data.target   || 'head',
        arr    = data.list,
        i      = data.list.length,
 
        params = {
            'link' : {
                rel     : "stylesheet",
                type    : "text/css",
                href    : ( data.root ) ? root : '/css/'
            },
            script : {
                type    : "text/javascript",
                src     : ( data.root ) ? root : '/js/'
            }
        } ;
 
    if ( arr.length && ( type == 'link' || type == 'script' ) ) {
 
        for ( i < 0; i--; ) {
 
            item = document.createElement( type );
 
            for( var prop in params[ type ] ) {
 
                item[ prop ] = params[ type ][ prop ];
            }
 
            cache = ( data.cache == false ) ? '?_=' + parseInt(new Date().getTime()/1000) : '' ;
 
            if ( type == 'link' )   item.href += arr[ i ] + '.css' + cache;
            if ( type == 'script' ) item.src  += arr[ i ] + '.js' + cache;
 
            switch( target.charAt(0) ) {
                case '#':
                    insert = document.getElementById( target.replace('#','') );
                    break;
                case '.':
                    insert = document.getElementsByClassName( target.replace('.','') )[0];
                    break;
                default :
                    insert = document.getElementsByTagName( target )[0];
            }
 
            insert.appendChild( item );
 
        }
 
    } else {
 
        console.log( "Неверный тип ожидаемых данных:", "\nData:", data );
        return false;
    }
 
}


* - Кеширование отменяется приставкой временной даты к имени файла при get запросе этого файла. Если Ваш сервер не кеширует файлы, данный скрипт этого не исправит.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru