2012-10-28 1 views
0

Привет, У меня возникли некоторые проблемы, включая javascript-файл в моем проекте html. Когда я включаю его так, как в конце перед тегом тела, мой сайт работает неправильно.Странное поведение с включением Javascript

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
    </body> 

Если, однако я удалить тег в конце, чтобы сделать его похожим на этот

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"/> 
</body> 

все работает отлично.

И если я включаю его в голову, он также работает независимо от синтаксиса. Почему он ведет себя так?

+0

С какими браузерами вы столкнулись с этой проблемой? –

+1

Тег сценария не предназначен для самозакрывания. Это вызовет проблемы в IE. – ScottE

+0

До сих пор я только пробовал это с помощью Google Chrome. что означает самозакрывание? что-то вроде второго примера? – TheBaj

ответ

1
  1. Делайте то, что все остальные уже сказал, относительно <script src="..."></script>
  2. Используйте только src="//...", вместо src="https://..." или на незашифрованных страниц (HTTP против HTTPS) ваши посетители будут получать предупреждения о безопасности для смешивания двух протоколов
  3. Если вы написали код jQuery в любом месте на странице, перед фактическим включением файла, вы получите справочные ошибки, где JS не сможет найти функцию ($), которую вы пытаетесь использовать.

Там является отладчик доступен, если вы используете Chrome и нажмите CTRL+SHIFT+J: он будет считать вас к разработчику-консоли, где я уверен, что вы будете видеть все виды ссылочных ошибок ,

В Firefox это будет CTRL+SHIFT+K, в IE это F12.

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

1

Для совместимости браузера, вы должны использовать первую форму:

<script src="https://..."></script> 

с явным закрывающим тегом </script>. Если это тот случай, когда ваш код не работает, ваша реальная проблема кроется в другом месте, а не в том, как вы закрываете тег.

+0

Действительно. Скорее всего, еще один тег (находящийся в другом месте документа) остается незакрытым и отключает синтаксический анализатор из-за искаженного HTML. Я рекомендую использовать [HTML validator] (http://validator.w3.org/), чтобы получить дополнительную информацию. –

+0

спасибо .. я думаю, это именно то, что я искал. это отчасти трудно отлаживать, когда нет сообщений об ошибках или что-то еще. – TheBaj

0

Возможно, для вас может быть какое-то условие гонки ... это будет хорошо, если вы сможете предоставить полный код ... если вы присоедините это в заголовке ... тогда ваш jquery успешно загрузится, а затем выполнит вашу часть тела ... если вы прикрепляете это к телу ... тогда закрытие скрипта дает некоторые проблемы ... попробуйте сыграть, изменяя места размещения кода сценария в теге body.

</script> закрытия является обязательным для работы в кросс-браузерах

Это может помочь вам в ур отладки.

+0

Хорошо, я буду использовать закрывающий тег. как добавить полный код здесь? – TheBaj

+0

Ваша HTML-часть кода ... вы можете попробовать ввести код, используя тег Ctrl + k .. проверьте параметры –

0

Почему вы хотите загрузить jquery в конец вашего кода? Если у вас есть другие скрипты, которые нуждаются в jquery, после этого они должны быть загружены после него. Таким образом, либо вы ставите все теги скрипта в голове, либо в конце тела - jquery должен быть загружен перед другими файлами, которые зависят от него.

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

  • Нет связанных вопросов^_^