Браузер будет блокировать и обрабатывать теги <script>
в том порядке, в котором он их видит - поэтому люди используют $(document).ready
, чтобы остановить , чтобы это не произошло. Если вы убедитесь, что ваш jQuery.js включен на страницу раньше, чем этот код, у вас все будет в порядке.
Если вместо того, чтобы включить этот встроенный блок скрипта в элемент управления .ascx, вы вызываете ClientScriptManager.RegisterClientScriptBlock()
, чтобы зарегистрировать его, вы можете сделать так, чтобы этот скрипт отображался вверху страницы, а не в точке. где элемент управления включен, что потенциально может дать незначительное увеличение производительности.
Редактировать: некоторые дополнительные объяснения.
При обработке страницы браузер будет нажимать на теги <script>
в том порядке, в котором они существуют в HTML. Когда это произойдет, он должен либо загрузить скрипт, а затем запустить его, если у тега есть атрибут src
- как ваш jQuery.js - или просто запустить скрипт, если он встроенный в JavaScript. Но он должен делать это по одному, в порядке, в котором они обслуживаются. Посмотрите это видео для визуализации этого.
Вот почему, если ваш jQuery.js включается до вашего встроенного ajax-вызова, вам не нужно беспокоиться о загрузке jQuery до того, как ваш встроенный код сработает. Так что не беспокойтесь о первой части вашего вопроса.
Что касается второй части вашего вопроса, если вызов ajax является встроенным JavaScript в вашем пользовательском элементе управления, он будет где-то посередине вашего HTML (в зависимости от того, где на вашей странице включен элемент управления). Если вы используете ClientScriptManager.RegisterClientScriptBlock()
, ASP.NET вставит скрипт в верхнюю часть страницы (довольно близко к верху <body>
, хотя после viewstate и некоторых других шаблонов ASP.NET), поэтому он будет обработан немного раньше , Я подозреваю, что разница вряд ли будет существенной, если только ваша страница не очень большая и элемент управления не подходит к концу.
Это помогает?