Загрузите jQuery в js, затем выполните скрипт, который зависит от него

У меня есть уникальный вопрос -

Я разрабатываю веб-приложение, которое создает виджеты, которые пользователь затем может встроить в свою собственную страницу (в основном, в сообщения в блоге). Я хочу, чтобы им просто пришлось встраивать одну строку, поэтому я просто использовал эту строку для включения оператора, чтобы вытащить Javascript с моего сервера.

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

function includeJavaScript(jsFile) {
  var script = document.createElement('script');
  script.src = jsFile;
  script.type = 'text/javascript';
  document.getElementsByTagName('head')[0].appendChild(script);
}

includeJavaScript('http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
jQuery();

Итак, я добавляю файл jQuery к голове, а затем пытаюсь запустить функцию jQuery. Проблема в том, что это не работает! Каждый раз, когда я запускаю его, я получаю сообщение об ошибке, что переменная jQuery не определена. Я попробовал несколько вещей. Я попытался поместить функции jQuery в триггер onLoad, чтобы вся страница (включая, предположительно, файл jQuery) загружалась до вызова моего скрипта. Я попытался поместить функцию jQuery в отдельный файл и загрузить ее после загрузки файла jQuery lib. Но я понимаю, что упускаю что-то простое - я новичок в jQuery, поэтому, если мне не хватает чего-то очевидного, я прошу прощения ...

РЕДАКТИРОВАТЬ

Хорошо, я попробовал предложение, предложенное digitalFresh, следующим образом (используя Safari 5, если это поможет), но я все еще получаю ту же ошибку?

function test() {
    jQuery()
}

var script = document.createElement("script");
script.type = "text/javascript";
script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js';
script.onload = test(); //execute
document.body.appendChild(script);

РЕДАКТИРОВАТЬ

ОК, я НАЧИНАЛ заставить его работать, по предложению Брендана, просто поместив вызов САМ в обработчик 'onload', вот так:

function addLoadEvent(func) { 
      var oldonload = window.onload; 
      if (typeof window.onload != 'function') { 
        window.onload = func; 
      } else { 
        window.onload = function() { 
          if (oldonload) { 
            oldonload(); 
          } 
          func(); 
        } 
    } 
} 
addLoadEvent( function() {
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js';
    document.body.appendChild(script);
    jQuery();
});

На данный момент, как вы видите, мне даже не нужно помещать его в «onload» - он просто работает. Хотя я должен признать, я все еще не понимаю, ПОЧЕМУ это работает, что беспокоит меня ...

Ответы на вопрос(5)

Ваш ответ на вопрос