Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для Daredevi1
311 / 303 / 78
Регистрация: 09.05.2009
Сообщений: 723

Динамическая подгрузка файлов.

25.03.2011, 09:40. Показов 2620. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При подключении скрипта, код которого будет ниже, должны подгрузиться два файлика: один с js кодом, второй со стилями. С js файлом все нормально, а вот со стилями проблема... Есть конечно обход подгрузить аяксом этот файлик и потом запхнуть содержимое в style, но хочется узнать что не так в этом случае. Вот код:
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
var countLoadedFiles = 0;
 
function loadFiles(callback) {
    var head= document.getElementsByTagName('head')[0];
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.onreadystatechange = function () {
        if (this.readyState == 'complete' || this.readyState == 'loaded') callback();
    };
    script.onload = function(){
        countLoadedFiles++;
        alert(countLoadedFiles);
        if (countLoadedFiles == 2){
            callback();
        }
 
    };
    script.src = "tooltip.js";
    head.appendChild(script);
 
    var style = document.createElement("link");
    style.setAttribute("rel", "stylesheet");
    script.onreadystatechange = function () {
        if (this.readyState == 'complete' || this.readyState == 'loaded') callback();
    };
    style.onload = function(){
        countLoadedFiles++;
        alert(countLoadedFiles);
        if (countLoadedFiles == 2){
            callback();
        }
    };
    style.href = "style.css";
    head.appendChild(style);
}
 
function loaded(){
    addFindElemByXPath(["/html/body/div[2]","/html/body/div"]);
}
 
loadFiles(loaded);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2011, 09:40
Ответы с готовыми решениями:

Динамическая подгрузка контента
Есть фреймовая страница, например такая: <frameset rows='*, 100'> <frameset cols='200,*'> <frame name='Menu'...

Динамическая подгрузка контента Ajax
Помогите пожалуйста разобраться. Необходимо на сайте barinel.ru сделать переключение во вкладках "прессы вертикальные",...

Динамическая подгрузка и выполнение кода
Запустил первый файл "file1.js" из html. Он выполняется. Но в нём есть ссылка на второй файл и при выполнении команды: ...

5
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
25.03.2011, 10:02
Daredevi1, Ну вроде всё верно, попробуй style.type = 'text/css' добавить
JavaScript
1
2
3
4
5
6
var style = document.createElement('link');
            style.rel  = 'stylesheet';
            style.type = 'text/css';
            style.href = filename;
 
 head.appendChild(style);
0
 Аватар для Daredevi1
311 / 303 / 78
Регистрация: 09.05.2009
Сообщений: 723
25.03.2011, 10:07  [ТС]
не помогло...
0
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
25.03.2011, 16:11
Daredevi1, Попробуй этот скрипт:
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
60
61
62
63
64
65
66
67
68
 var Loader = {
    load: function(fileList, callback, scope, preserveOrder) {
        var scope       = scope || this,
            head        = document.getElementsByTagName("head")[0],
            fragment    = document.createDocumentFragment(),
            numFiles    = fileList.length,
            loadedFiles = 0,
            me          = this;
        
        var loadFileIndex = function(index) {
            head.appendChild(
                me.buildScriptTag(fileList[index], onFileLoaded)
            );
        };
        
 
        var onFileLoaded = function() {
            loadedFiles ++;
            
            if (numFiles == loadedFiles && typeof callback == 'function') {
                callback.call(scope);
            } else {
                if (preserveOrder === true) {
                    loadFileIndex(loadedFiles);
                }
            }
        };
        
        if (preserveOrder === true) {
            loadFileIndex.call(this, 0);
        } else {
            for(var i = 0, len = fileList.length; i < len; i++){
                 fragment.appendChild(this.buildScriptTag(fileList[i], onFileLoaded));
                }
        }            
            head.appendChild(fragment);
        
    },
    
    buildScriptTag: function(filename, callback) {
        var exten = filename.substr(filename.lastIndexOf('.')+1);
        if(exten=='js') {
            var script  = document.createElement('script');
            script.type = "text/javascript";
            script.src  = filename;
            
            if(script.readyState) {
                script.onreadystatechange = function() {
                    if (script.readyState == "loaded" || script.readyState == "complete") {
                        script.onreadystatechange = null;
                        callback();
                    }
                };
            } else {
                script.onload = callback;
            }
            return script;
        }
        if(exten=='css') {
            var style = document.createElement('link');
            style.rel  = 'stylesheet';
            style.type = 'text/css';
            style.href = filename;
            callback();
            return style;
        }
    }
}
Вызов:
JavaScript
1
Loader.load(["style.css"],function(){/*Обработчик*/})
1
 Аватар для Daredevi1
311 / 303 / 78
Регистрация: 09.05.2009
Сообщений: 723
25.03.2011, 16:15  [ТС]
Спасибо. Вечером проверю.
0
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
25.03.2011, 17:20
Daredevi1, Может пригодится тоже самое, только в версии Minimal :
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var Loader = {
load:function(fileList, callback, scope, preserveOrder){
 var scope=scope||this,PO=preserveOrder,
 FL=fileList,D=document,a='appendChild',
 H=D.getElementsByTagName("head")[0],
 F=D.createDocumentFragment(),FLen=FL.length,LL = 0,cb=callback,
 lF=function(i){H[a](this.bT(FL[i],oL))},
 oL=function(){
  LL++; if (FLen==LL && typeof cb=='function') cb.call(scope) 
  else if (PO===true)lF(LL)}
  if (PO===true)lF.call(this,0)
  else for(var i = 0; i < FLen; i++) F[a](this.bT(FL[i],oL));H[a](F)},    
 bT:function(filename, cb) {
  var a = function(o, c){if(o&&c&&typeof c=='object')for(var p in c)o[p]=c[p];return o},
  e = filename.substr(filename.lastIndexOf('.')+1),r='onreadystatechange',rs='readyState',
  d = document,c='createElement';
  if(e=='js') {var s  = a(d[c]('script'),{type:"text/javascript",src:filename});
  if(s[rs]){s[r] = function(){if (s[rs] == "loaded" || s[rs] == "complete"){s[r] = null;cb()}
  }}else s.onload = cb;return s;}
  if(e=='css'){var s = a(d[c]('link'),{rel:'stylesheet',type:'text/css',href:filename});cb();return s
}}}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2011, 17:20
Помогаю со студенческими работами здесь

Динамическая подгрузка данных из БД при выборе в select
Здравствуйте. Я в JavaScript полный ноль, пока только совсем немного понимаю, что к чему, но пишу диплом и времени с самого начала учить...

Динамическая подгрузка
Доброго времени суток! Нашёл пример на наших просторах. Хороший, нравится. Загрузил на хост, работает. На странице есть...

Динамическая подгрузка данных по запросу
Здравствуйте дорогие форумчане) Кто подскажет в чём проблема? Есть форма, с выпадающим списком, выбираю пункт из него, нажимаю кнопку...

Динамическая подгрузка данных на страницу
Доброго времени суток. Есть такой вопрос, хочу сделать подгрузку данных в комментариях к примеру на фотографии. Нашёл подходящий готовый...

Динамическая подгрузка элементов в неизвестной функции
Всем, привет. Работаю над проектом в котором динамически подгружаются файлы. Есть стрелоска вниз и надпись Русский. При нажатии на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru