2013-05-03 2 views
3

Я пытаюсь включить jQuery из файла javascript. Я пробовал следующее, хотя это не работает.Включить jQuery из другого файла JavaScript

var script = '<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>'; 
document.getElementsByTagName('head')[0].appendChild(script); 
+0

AppendChild Безразлично 't автоматически анализировать строки HTML – Dave

ответ

7

</script> закрывает блок открытия <script>, даже если это в строке. Я хотел бы сделать это следующим образом:

(function() { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = document.location.protocol + '//code.jquery.com/jquery-1.9.1.min.js'; 

    document.getElementsByTagName('head')[0].appendChild(script) 
})(); 
+0

Ницца, спасибо! Только одно, у меня есть код jquery в том же .js-файле, который теперь содержит ваш код (ваш код находится вверху.js file), поэтому он не загрузит jquery. Любое решение? Еще раз большое спасибо! – Harry

+0

@Enigmo: Итак, этот код находится в файле, который использует jQuery? – Blender

+0

Зачем вам нужно установить script.type? – dandavis

1

Вы не можете иметь </script> в любом месте внутри блока сценария, даже внутри строки, так как закончится блок сценария там.

Разбейте конечный тег в строке:

var script = '<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></scr'+'ipt>'; 
+0

Или избежать '/' :) – Ian

+0

<\/script> works – dandavis

0
var script = document.createElement('script'); 
script.src = 'http://code.jquery.com/jquery-1.9.1.min.js'; 
document.getElementsByTagName('head')[0].appendChild(script); 
1
(function() { 
     var script = document.createElement('script'); 
     script.type = "text/javascript"; // keeping older browsers happy. 
     script.src = window.location.protocol + '//code.jquery.com/jquery-1.9.1.min.js'; 
     // browsers prevent cross-protocol downloading. 
     (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);// In Opera a site can get by without a <head> 
    })(); 
+0

'window.location.protocol' оставляет двоеточие в конце. – Blender

1

Просто используйте метод JQuery getScript() для загрузки JQuery: http://api.jquery.com/jQuery.getScript/

... Шучу.

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

var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = 'http://code.jquery.com/jquery-1.9.1.min.js'; 
head.appendChild(script); 

От: http://unixpapa.com/js/dyna.html

Кроме того, при использовании на странице HTTPS, вам нужно будет загрузить скрипт из HTTPS совместимый CDN, как Google Hosted библиотек (src = "// ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js")

-1

Прежде всего, скрипт переменной содержит последовательность </script>, которую вы не можете сделать как это в вашем коде, потому что браузер будет осел ume (и он должен), что это <script> тег закрыть. , например, если ваш код сценария содержит синтаксическую ошибку, которая является переменной строка, которая не имеет близко " это будет выглядит как

<script>var bad = "abcd ;</script> 

, чтобы решить эту проблему можно разбить </script> строку как "</scr" + "ipt>" или вы могли бы избежать его: "<\/script>"

так:

var script = '<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"><\/script>'; 
document.getElementsByTagName('head')[0].appendChild(script); 

Вторая вещь в том, что appendChild() функция принимает элемент Node, а не строку

так:

var script = document.createElement("script"); 
script.src = "http://code.jquery.com/jquery-1.9.1.min.js"; 
document.getElementsByTagName("head")[0].appendChild(script); 

Во всяком случае, я предпочитаю использовать модуль и JavaScript загрузчик как RequireJS.

+0

почему голос? –

0

используя крошечный многоразовый скрипт сумматор:

function fetch(url){ 
var d=document, s='script'; 
d.getElementsByTagName(s)[0].parentNode.appendChild(d.createElement(s)).src=url; 
} 

fetch('//code.jquery.com/jquery-1.9.1.min.js'); 

не все страницы имеют Heads во всех браузерах, но если скрипт работает, так что может тег родственного сценария ...

Смежные вопросы