2015-05-20 2 views
-5

Я пытаюсь загрузить файлы сценариев библиотеки динамически, если они не загружены ни одной другой страницей. Здесь container является просто элементом div.Загрузите файл javascript динамически, добавив тег скрипта в тело

if($ === undefined){ 
    $(".container").append('<script src="../static/js/jquery.js"></script>') 
    $(".container").append('<script src="../static/js/dt_jq_ui.js"></script>'); 
    $(".container").append('<script src="../static/js/report_app.js"></script>') 
} 

Но это не удается, и ошибка консоли Firefox является, enter image description here

текст Ошибка,

SyntaxError: unterminated string literal 
$(".container").append('<script src="../static/js/jquery.js"> 

Почему HTML строка с script тегом помечаются как недопустимые?

+0

Включите эту ошибку как текст. Это изображение невозможно прочитать. – jurgemaister

+5

Итак ... вы загружаете jQuery с jQuery, когда jQuery нет? – Oka

+0

добавлен текст ошибки –

ответ

2

Does it event enter the if block ?

Ответ no потому $ рассматривается как variable

1.Variables, которые на самом деле «не определен», то есть они не существует как данное имя не связано с текущей лексической Окружающая среда. Доступ к такой переменной вызовет ошибку, но использование typeof не будет и вернет «undefined». Напротив, доступ к несуществующим свойствам не приведет к ошибке и возврату undefined вместо этого (и вы можете использовать оператор in или метод hasOwnProperty(), чтобы проверить, действительно ли существуют свойства).

2. Существующие переменные, которым не присвоено значение (которое является общим из-за подъема var) или которые явно установлены в неопределенные. Доступ к такой переменной будет возвращен undefined, typeof вернет «undefined».

3. Существующие переменные, которые явно установлены в нуль. Доступ к такой переменной будет возвращать null, typeof вернет «объект». Обратите внимание, что это вводит в заблуждение: null - это не объект, а примитивное значение типа Null (что приводит к тому, что вы не можете вернуть значение null из функций-конструкторов - вместо этого вы должны указывать ошибку).

+0

лучший ответ даже на самые немые вопросы ... –

1

попробовать:

.append('\<script src="../static/js/jquery.js"\>\<\/script\>') 
2

Используйте этот способ включить скрипты:

(function(){ 
    var newscript = document.createElement('script'); 
    newscript.type = 'text/javascript'; 
    newscript.async = true; 
    newscript.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'; 
    (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(newscript); 
})(); 
1

Попробуйте как этот

var s = document.createElement("script"); 
s.type = "text/javascript"; 
s.src = "../static/js/jquery.js"; 
$(".container").append(s); 
1

хорошо, если $ не определено,
это будет генерировать ошибка:

$(".container") 

becase $ не является функцией, ее не определено!