Проблема в том, что у вас есть много переменных, объявленных в глобальной области видимости, и, в частности, одна из них называется «имя».Символ «имя» уже связан с объектом window
как имя окна.Утверждение
const name = infos.querySelector("#full-name");
не делает то, что можно подумать.Похоже, что он должен связать переменную name
с элементом <h2>
;фактически он устанавливает имя окна в строку «[object HTMLHeadingElement]» (может варьироваться в зависимости от браузера).
На мой взгляд, лучший способ исправить это - очистить весь код путем переносавсе это в манекене IIFE.Добавьте
(function() {
перед существующей первой строкой и
})();
после последней строки, и это работает, потому что весь код теперь находится в новой закрытой области видимости и ничто не конфликтует с window
свойства.Это также работает, если вы изменяете переменную с «name» на «xname» или что-либо еще, что не сталкивается со встроенным символом браузера.
Почему это работает в представлении Codepen «Редактор»?Я не знаю «глубокого» ответа на этот вопрос, но в представлении «Редактор» страница, создаваемая пером, скрыта в элементе <iframe>
.Теперь элемент <iframe>
имеет свойство name, но загадочным образом объявление вашей константы name
может скрыть это.В полноэкранном режиме ваша страница является фактическим окном верхнего уровня, и в этой ситуации window.name
не позволит себе быть затененным.