Я столкнулся с любопытной проблемой сегодня.У нас есть веб-страница, которая скрывает body
через CSS, а затем есть немного JavaScript, который устанавливает body
в display: block
, чтобы показать его.(Это часть некоторой логики перебора iFrame, которую мы должны добавить).
У нас были проблемы на одной странице, но только в Safari.Посмотрев на вещи, я обнаружил, что виновником было то, что вызывался включаемый файл, который содержал свой собственный тег body
, поэтому мы закончили с искаженным HTML с тегом body
, вложенным в существующие страницы body
tag.
Поскольку JS искал первый тег body
, содержимое, которое мы фактически хотели показать, так и не было показано, поскольку оно было обернуто вторым тегом body
.
Iпредположим, что Firefox просто прощает HTML и игнорирует второй тег body
.Safari не сделал этого, когда мы посмотрели страницу на сервере.
Однако, если я возьму файл и запущу его локально, Safari скажет мне:
Extra <body>
встречено.Перенос атрибутов обратно в исходный элемент <body>
и игнорирование тега.
Мне интересно, почему Safari мог принять эту «политику» игнорирования плохого HTML локально, но не с сервера.Если это имеет значение, мы обращаемся к сайту https.Возможно, Safari мудрый и пытается избежать любых потенциальных проблем с безопасностью, допуская плохой HTML?