#javascript #jquery #html #ajax
#javascript #jquery #HTML #ajax
Вопрос:
Я загружаю динамический контент следующим образом:
$('#my-div').load('my.html');
Внутри my.html является ли код таким
<html>
<head>
</head>
<body>
<script>
$(function(){
alert('should fire later');});
</script>
</body>
<script>
alert('should fire first!');
</script>
</html>
Изначально my.html был загружен внутри iframe, и все было хорошо.
Однако для рефакторинга и модернизации кода он был изменен на использование ajax load. Однако теперь порядок выполнения изменен на обратный, поскольку технически событие ready уже запущено на родительской странице.
Проблема с этим заключается в том, что существуют зависимости, которые требуют, чтобы события запускались в правильном порядке. Я также не решаюсь переместить блок скрипта выше, так как этот код слишком часто используется повторно, и я понятия не имею, что еще может сломаться. Хотя при тестировании smoke перемещение блока скрипта вверх работает на одной странице, над которой я работал.
Можно ли использовать загрузку jquery ajax и сохранить первоначально намеченный порядок выполнения скрипта?
Комментарии:
1. Загружаете ли вы свой HTML до document.ready? Или он загружается при выполнении какого-либо действия?
2. Антуан, я думаю, ты получил ответ, если я просто уберу $.load(«my.html «) вне события ready и просто встроите его, проблема исчезнет! И мне не нужно изменять общий код.
3. Рад, что смог помочь ^_^
Ответ №1:
Попробуйте это:
<html>
<head>
</head>
<body>
<script>
function later () {
alert('should fire later');
}
</script>
</body>
<script>
alert('should fire first!');
later();
</script>
</html>
Ответ №2:
Что произойдет , если вы проверите состояние загрузки таким образом ?
<html>
<head>
</head>
<body>
<script>
jQuery(window).load(function () {
alert('page is loaded');
});
</script>
</body>
</html>
Однако вы можете проверить состояние загрузки Ajax, используя этот подход :
$( document ).ajaxComplete(function( event,request, settings ) {
$( "#my-div" ).append( "<span>Request Complete.</span>" );
});
Вы можете найти полезную информацию здесь: ajaxComplete()