2014-09-23 4 views
0

Я использую summernote как мой веб-редактор. Но некоторая часть редактора (кнопки с классом dropstrap dropdown) не работала. Я, наконец, узнал, что проблема загрузки jquery.js и bootstrap.js в два раза была проблемой (на странице есть файл header.php, который уже загружает два js-файла). Так что я смущен ошибкой. Что произойдет, если js-файл будет загружен несколько раз, в то время как некоторые другие js-файлы зависят от него? И почему jquery.js, jquery-ui.js и bootstrap.js загружаются по порядку, когда они загружаются параллельно?Почему загрузка bootstrap.js дважды приводит к ошибке?

ответ

1

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

EDIT: Я также читал больше об этой теме, потому что это было интересно для меня. Существуют некоторые обстоятельства, при которых несколько версий jQuery загружаются в документ. Примером может служить набор функций, которые были обесценены с одной версии на другую, и вы нашли их полезными, это допустимая причина для двух файлов. В этом случае вы хотели бы использовать noConflict из одной библиотеки в другую, для того, чтобы держать сценариев инлайн, а не иметь их перепутать друг друга, быстрые ссылки ниже пример:

<script src="other_lib.js"></script> 
<script src="jquery.js"></script> 
<script> 
    $.noConflict(); 
    // Code that uses other library's $ can follow here. 
</script> 

Кроме того, если вы хотите читать до больше о функциональности noConflict(), вот хорошая ссылка ссылка для вас:

http://api.jquery.com/jquery.noconflict/

Чтобы все резюмировать, хотя, я бы не использовать несколько библиотек, которые та же версия полностью. Также, чтобы помочь вам избежать этого в будущем, если вы только начинаете и используете только javascript, html и css, я бы порекомендовал текстовый редактор. Это вы знали, с какой средой вы работаете, и это позволяет вам полностью контролировать. Вот ссылка на хороший:

Sublime Text: http://www.sublimetext.com/

+0

Спасибо вам за ответ. Но я все еще запутался в последовательности загрузки файла javascript. Когда я смотрю последовательность спуска в хром «Сеть», файлы js, кажется, загружаются и выполняются одновременно. Поэтому я не могу понять, почему некоторые ребята говорят, что «выполнение одного файла javascript заблокирует других от загрузки». – lege

+0

Это потому, что они не блокируют друг друга от загрузки. Первый файл полностью загружается, а второй - полностью. Оба они одновременно решаются. Поскольку второй файл был последним, он разрешил его использование. Все, что называется, вытаскивается из этого файла. Единственный способ, который он будет вызывать из первого файла, - это если он не существует во втором файле или он существенно отличается от чего-то во втором файле. –