Включение файлов JS (JQuery) в файлы JSPX

Я создаю динамический веб-проект в Eclipse (почти с нуля) и создал файл JSPX, в который помещаю

<head>...
<script type="text/javascript" src="route/to/scripts/jquery.js"></script>
<script type="text/javascript" src="route/to/scripts/jquery.ui.js"></script>
<script type="text/javascript" src="route/to/scripts/something.js"></script>
</head>

Я намерен использовать Jquery UI sortable и обнаружил, что при использовании JSPX в Firefox загружается только первый скрипт, а IE (пока в опере работает...). Если я использую обычный JSP, будь то HTML или XHTML, он загружает все файлы JS.

Есть ли способ успешно включить все файлы JS без использования

<script>
<jsp:include ...>
</script>

что я должен знать? (потому что этот скрипт загружает В окончательный (X)HTML)

РЕДАКТИРОВАТЬ: Просто задумался... почему Opera правильно читает xhtml, а FF и IE не могут прочитать теги <script>? Может ли это быть ошибкой?


person Alfabravo    schedule 28.11.2011    source источник


Ответы (1)


JSPX имеет причудливое поведение, заключающееся в автоматическом сворачивании тегов без тела. Так эффективно

<script type="text/javascript" src="route/to/scripts/jquery.js"></script>
<script type="text/javascript" src="route/to/scripts/jquery.ui.js"></script>
<script type="text/javascript" src="route/to/scripts/something.js"></script>

окажется в браузере как

<script type="text/javascript" src="route/to/scripts/jquery.js" />
<script type="text/javascript" src="route/to/scripts/jquery.ui.js" />
<script type="text/javascript" src="route/to/scripts/something.js" />

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

Вы можете обойти это, поставив <jsp:text /> между тегами

<script type="text/javascript" src="route/to/scripts/jquery.js"><jsp:text /></script>
<script type="text/javascript" src="route/to/scripts/jquery.ui.js"><jsp:text /></script>
<script type="text/javascript" src="route/to/scripts/something.js"><jsp:text /></script>
person BalusC    schedule 29.11.2011
comment
Таким образом, это тот же трюк, который требуется в IE6, для которого требуется что-то вроде  ,   или около того. сейчас попробую хехе - person Alfabravo; 29.11.2011
comment
Вы имеете в виду внутри <td>? Ну, это на самом деле другая причина :) - person BalusC; 29.11.2011
comment
Нет, в каком-то приложении над Cocoon, с которым я работал, люди помещали тег с закрывающим тегом, но без чего-либо между ними, и сериализованный материал, по-видимому, был в порядке. Почему-то IE6 не смог получить JS, если между тегами для каждого скрипта не было добавлено несколько пробелов ( ). Также произошло с тегами с фоновым изображением и без текста, чье изображение не отображалось, если также не были добавлены некоторые пробелы. - person Alfabravo; 29.11.2011
comment
Работал отлично. Этот трюк также избавил меня от новой ошибки из-за автоматического сворачивания div, которые стали недействительными, что привело к тому, что все позиционирование было сведено на нет (блин). Спасибо за совет - person Alfabravo; 29.11.2011