Я понятия не имею, как описать это точно / разумно, потому что это кажется совершенно невозможным, но для этого должна быть какая-то причина.
Я пытаюсь использовать jquery, jquery-ui, qtip (всплывающую подсказку для jquery) и highcharts (javascript charting), но для целей публикации я так же легко мог использовать только jQuery и jQuery-UI.
Если я добавлю свои теги <script/>
внизу моего элемента <head/>
, я получаю сообщение об ошибке, пытаясь вызвать расширение .slider () для настройки моих ползунков. Но если я помещу теги <script/>
прямо перед закрытием моего элемента <body/>
, тогда все будет работать. Чтобы проиллюстрировать это, следующее не будет работать (очевидно, псевдокод ниже):
<head>
<script jquery.js/>
<script jquery-ui.js/>
</head>
<body>
... html ...
<script type="text/javascript">
$(document).ready(function () {
$(".slider").slider( { .. options .. } );
} )
</script>
... more html *including* the .slider elements
</body>
Однако, если я переместу два тега сценария jQuery, чтобы они были прямо над </body>
закрывающим элементом, все будет работать. Когда теги сценария находятся в элементе head, и я отлаживаю свое приложение, в основном страница действительно выглядит полностью загруженной, и Visual Studio выделяет строку, вызывающую функцию .slider (), говоря, что она не знает, что слайдер () есть. Глядя на стек вызовов, кажется, что он корректно вызывает его из функции готовности документа ... разметка всего, кажется, тоже там, заставляя меня поверить, что документ действительно готов.
Теперь я не включил в свой псевдокод вещи, которые требуются сайту asp.net 1.1 / 2.0, а именно элемент <form/>
с runat = "server" и использование тега <asp:ScriptManager/>
(нам нужно было что для анализа денежных значений из разных культур с использованием Microsoft Ajax). Я не могу поверить, что они будут причиной проблемы, но, возможно, они. Кроме того, asp.net вводит несколько своих собственных разделов сценария (то есть для проверки, отправки обратно, и др.)
Относительно тега формы ... вся разметка html и document.ready была бы внутри тега формы, в то время как теги сценария всегда вне тега формы (либо над ним, в голове или под ним в нижней части тела).
Очевидно, я мог бы оставить теги сценариев внизу, и я вполне могу в конечном итоге сделать это, но я пытаюсь получить чистый «шаблон сайта», который можно использовать при создании новых клиентских сайтов, и это просто кажется неправильным что у меня есть ограничение, заставляющее меня размещать эти теги в нижней части HTML. Я уверен, что наш каркасный код (или, возможно, asp.net) просто вставляет что-то, что вызывает проблемы / конфликты с jQuery, но я действительно не знаю, как отладить / диагностировать, что это за проблема. Поэтому, если у кого-то есть какие-либо предложения, я буду очень признателен.