Почему вылезает ошибка doc.head is null при полной замене html страницы?

Добрый день.
Стоит задача заменить весь html код страницы на новый, который приходит через ajax. Грубо говоря загрузка страниц без перезагрузки. Нажимаешь определенные ссылки - уходит get запрос на сервер, в ответ приходит полный html нужной страницы (начиная с !DOCTYPE). Меняю благодаря незабвенному jquery:
$('html').html(result.code);
И вроде бы все работает так, как надо, проблем нет никаких, однако в консоле после каждой такой смены вылезает ошибка, которая вроде бы ни на что не влияет, но неприятно:

Чтобы это значило? Может после смены html надо какой-то триггер вызвать или заменять как-то не так?

Дополнительно:

ты не можешь изменять html как дом элемент

  • Владислав Лысков, а как его изменять? В интернетах пишут про второй способ:

    Все работает, но только в первый раз, а дальше скрипты все слетают и страницы перезагружается. Я так понимаю, потому что фактически новый документ был создан, а обработчики висят на старом...

  • lolrofl01, на самом деле какая-то странная задача
  • Владислав Лысков, вполне стандартная задача. Можно. конечно, натянуть vue, поставить ноду, установить кучу плагинов, чтобы получился ssr. Можно пойти проще - установить инерцию или livewire. Но когда проект - кривой МВП и состоит из целых 6 страниц - какой в этом смысл?! Поэтому упрощаем еще сильнее - либо делаем на сервере рендер body части и вставляем ее, соответственно, в $('body'), но тут встают вопросы того, что надо отдельно будет менять тайтл, дескрипшн, разные теги и на некоторых страницах подгружать дополнительные файлы со стилями иили скриптами. Это все реализуемо, но еще куда проще ничего этого не делать - отправлять get запрос и получать уже готовый html страницы и просто вставлять его вместо текущего. Задача на 5 минут. И вроде все работает так, как надо. Но ошибка смущает, мало ли к чему она приведет в будущем.

    Задача из разряда "инвестор хочет бегло глянуть будет ли лучше, ведь это современно". По опыту знаю, что ему понравится и он решит оставить эту реализацию 100%, поэтому переживаю за ошибку, вдруг завтра будет задача, которую нельзя будет реализовать из-за этой ошибки. Или она не влияет ни на что?

  • lolrofl01,

    в ответ приходит полный html нужной страницы (начиная с !DOCTYPE).

  • Если ты обновляешь всю страницу - просто переходи на новую страницу, лол. Разница будет лишь в том что обновиться url и браузер куда лучше сумеет обработать перерисовку.:)

    А так - напротив ошибки указывается место в коде которое её вызвало, тыкаешь и смотришь кто там пытается обратиться к head которого пока нет.

  • Владислав Лысков, и?
  • Aetae,

    Разница будет лишь в том что обновиться url и браузер куда лучше сумеет обработать перерисовку.:)

    Ну это хотелки инвестора. Сайт итак быстро грузится, практически без перезагрузок, круглешок загрузки виден на 0.5сек при переходе и вот он инвестора напрягает. Но из-за этого делать грамотное разделение фронта с бэком и рестом между ними я не хочу, мне банально жаль времени. Поэтому приходится выбирать максимально быстрое решение.

    А так - напротив ошибки указывается место в коде которое её вызвало, тыкаешь и смотришь кто там пытается обратиться к head которого пока нет.

    Да ладно)))

    Вот как раз этот скрипт и вызывает ошибку, именно та строка, которая заменяет $('html').html(result.code).

  • Ответы:

    Попробуйте удалить старый "head" с содержимым

     

    Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.

     

      • Почему вылезает ошибка doc.head is null при полной замене html страницы?Есть ответ
      • 07.04.2024
      Ответить

      Ошибка "doc.head is null" обычно возникает, когда вы пытаетесь обратиться к элементу head документа, который не был найден. Это может произойти при полной замене HTML страницы, когда вы перезагружаете страницу или загружаете новый HTML документ.

      Проблема может возникать из-за того, что ваш скрипт выполняется до того, как документ полностью загружен, или из-за того, что вы пытаетесь обратиться к элементу head, который не существует в новом HTML документе.

      Для того чтобы избежать ошибки "doc.head is null" при полной замене HTML страницы, вам следует убедиться, что ваш скрипт выполняется после того, как документ полностью загружен. Для этого вы можете использовать событие DOMContentLoaded:

      Также, убедитесь, что элемент head существует в вашем новом HTML документе. Если вы хотите добавить какие-то элементы в head, вы можете использовать следующий код:

      Используя эти рекомендации, вы сможете избежать ошибки "doc.head is null" при полной замене HTML страницы и ваш скрипт будет успешно работать.

    Оставить комментарий