Показать сообщение отдельно
  #1 (permalink)  
Старый 09.06.2012, 12:40
Новичок на форуме
Отправить личное сообщение для bukvaG Посмотреть профиль Найти все сообщения от bukvaG
 
Регистрация: 09.06.2012
Сообщений: 3

Асинхронная подгрузка скрипта с немедленным выполнением его кода
Всем добрый день. Хотелось бы сказать "коллеги", но я с js на большое "Вы".
Суть моего незнания такова. Есть скрипт, который грузится вместе с о страницей
class.js (например)
(function(window){
 // Включение "строгого" режима
 'use strict';
 ...
  // Коллекция классов
  function Cls(){
   // Объект-справочник
   var classes = {};
   
   // Добавление скрипта на страницу
   function AddScript(p_name){
    // Получение элемента-родителя
    var parent = document.getElementsByTagName('head')[0];
    if(parent == undefined){
     throw new Error('Ошибка: родительский элемент не найден.');}
    
    // Создание элемента-скрипта
    var script = document.createElement('script');
    // Установка атрибутов
    script.setAttribute('type','text/javascript');
    script.setAttribute('src',p_name+'.js');
    // Добавление элемента-скрипта к элементу-родителю
    parent.appendChild(script);
    
    return;
   }
   
   // Добавление свойства к объекту
   Object.defineProperty(this,'Button',{
    enumerable:false, // перечислимость
    configurable:false, // конфигурируемость
    get: function(){
     // Если в справочнике нет нужного класса
     if(classes['Button'] == undefined){
      AddScript('Button');
     }
     // Возврат значения свойства
     return classes['Button'];
    },//get
    set: function(value){
     
    }//set
   });
   
   // Добавление класса в справочник
   this.AddClass = function(f_name,f_value){
    classes[f_name] = f_value;
   }
  }
  
  window.cls = new Cls();
 ...
}(window));

и есть некий
Button.js
(function(window){
 // Добавление класса
 window.cls.AddClass('Button',function(p_param){
  // Это функция-конструктор класса
 });
}(window))

Ну я думаю уже многим стало понятно чего бы я хотел добиться вызовом
var Button = window.cls.Button;

И так же большинству и без прогона становится понятно что то чего я хочу я хрен получу, так как асинхронность.
Собственно, таки, растолкуйте мне убогому (начинающему) фреймворко-писателю как мне это реализовать? Может кто видел в каких аццких кодах "динамическую догрузку модулей"?

Заранее благодарен за любые комменты/ответы/"пиночки".
Ответить с цитированием