Как включить jquery.js в другой файл js? - PullRequest
11 голосов
/ 07 апреля 2011

Я хочу включить jquery.js в файл myjs.js. Я написал код ниже для этого.

  var theNewScript=document.createElement("script");
  theNewScript.type="text/javascript";
  theNewScript.src="http://example.com/jquery.js";
  document.getElementsByTagName("head")[0].appendChild(theNewScript);
  $.get(myfile.php);

Там отображается ошибка в 5-й строке, которая $ не определена. Я хочу включить jquery.js, а затем вызвать функцию $ .get () в файле myjs.js. Как я могу это сделать? Пожалуйста, помогите мне

Ответы [ 4 ]

11 голосов
/ 07 апреля 2011

Добавление тега скрипта внутри заголовка документа программно не обязательно означает, что скрипт будет доступен немедленно .Вам следует подождать, пока браузер загрузит этот файл, проанализирует и выполнит его.Некоторые браузеры запускают событие onload для сценариев, в которых вы можете подключить свою логику.Но это не кросс-браузерное решение.Я бы предпочел «опросить», чтобы конкретный символ стал доступным, например:

var theNewScript = document.createElement("script");
theNewScript.type = "text/javascript";
theNewScript.src = "http://example.com/jquery.js";
document.getElementsByTagName("head")[0].appendChild(theNewScript);
// jQuery MAY OR MAY NOT be loaded at this stage
var waitForLoad = function () {
    if (typeof jQuery != "undefined") {
        $.get("myfile.php");
    } else {
        window.setTimeout(waitForLoad, 1000);
    }
};
window.setTimeout(waitForLoad, 1000);
4 голосов
/ 07 апреля 2011

Проблема в том, что скрипт не загружается мгновенно, требуется некоторое время для загрузки файла скрипта на вашу страницу и выполнения (в случае, если jQuery определяет $).

Я бы порекомендовал вамиспользовать HeadJS .тогда вы можете сделать:

head.js("/path/to/jQuery.js", function() {
   $.get('myfile.php');
});
0 голосов
/ 07 апреля 2011

Я использовал этот код раньше, и он работал:

var t=document;
var o=t.createElement('script');
o=t.standardCreateElement('script');
o.setAttribute('type','text/javascript');
o.setAttribute('src','http://www.example.com/js/jquery-1.3.2.js');
t.lastChild.firstChild.appendChild(o);
0 голосов
/ 07 апреля 2011

Простой ответ, не надо. Файл JQuery очень обидчивый для злоумышленников, так что не пытаться. Присоединение других файлов в jQuery файл часто вызывает ошибки в JS консоль, PLUS jQuery не инициализируется пока файл не загрузится в основную документ.

Извините, поцарапайте это. Не совсем знал, что ты делал.

Попробуйте это:

var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'http://domain.com/jquery.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...