Разработка сценария заголовка для запуска после завершения загрузки документа

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

У меня есть функция javascript «loadFramework ()», которая изменяет HTML-документ. В частности, он повторно запускает команду jQuery $("#element-id").load("document/name.html") , которая вводит HTML в document/name.html непосредственно в элемент с #element-id.

Изначально я запускал loadFramework () в скрипте в заголовке документа. Однако с тех пор я понял, что функция завершается сбоем, если страница еще не загружена, поскольку она зависит от наличия элемента с #element-id.

Я не могу понять, как заставить эту функцию запускаться, когда это необходимо. Казалось, простым решением было установить его в качестве функции document.onload:

 document.onload = function() {
    loadFramework();
}
  

Но в этом случае, похоже, он вообще никогда не запускается.

Как мне убедиться, что функция заголовка запускается только после загрузки документа?

Комментарии:

1. Смешно, если я Google «jQuery и только тогда, когда документ загружает» первый результат-это справочник , пожалуй, самая распространенная функция в jQuery, которая делает именно то, что вы хотите…

2. попробуйте console.log("this code runs") в качестве первой строки кода в loadFramework() методе. Это поможет вам проверить, выполняется ли этот метод вообще.

3. Самое простое (а также наиболее очевидное) решение — поместить ваш скрипт прямо перед </body> тегом. Это также считается лучшей практикой для этого.

Ответ №1:

Вам следует использовать window.onload , если вы ищете ванильный вариант JS


window.onload = function() {
loadFramework();
}

Ответ №2:

Загрузка Jquery принимает дополнительный аргумент «complete». Вы можете запустить javascript там. Таким образом, код будет:

 $("#element-id").load("document/name.html", function(){
    loadFramework();
});
  

Вы также можете использовать $(document).готово(функция{loadFramework()}) внутри загружаемого HTML-кода.

Ответ №3:

Если вы хотите выполнить loadFramework() метод после «document/name.html «загружен, я бы предложил следующий код.

 $(function() {
    $("#element-id").load("document/name.html", function(){
        loadFramework();
    });
});