Safari больше прощает локально, чем удаленно с искаженным HTML. Зачем? - PullRequest
1 голос
/ 03 октября 2011

Я столкнулся с любопытной проблемой сегодня.У нас есть веб-страница, которая скрывает body через CSS, а затем есть немного JavaScript, который устанавливает body в display: block, чтобы показать его.(Это часть некоторой логики перебора iFrame, которую мы должны добавить).

У нас были проблемы на одной странице, но только в Safari.Посмотрев на вещи, я обнаружил, что виновником было то, что вызывался включаемый файл, который содержал свой собственный тег body, поэтому мы закончили с искаженным HTML с тегом body, вложенным в существующие страницы bodytag.

Поскольку JS искал первый тег body, содержимое, которое мы фактически хотели показать, так и не было показано, поскольку оно было обернуто вторым тегом body.

Iпредположим, что Firefox просто прощает HTML и игнорирует второй тег body.Safari не сделал этого, когда мы посмотрели страницу на сервере.

Однако, если я возьму файл и запущу его локально, Safari скажет мне:

Extra <body> встречено.Перенос атрибутов обратно в исходный элемент <body> и игнорирование тега.

Мне интересно, почему Safari мог принять эту «политику» игнорирования плохого HTML локально, но не с сервера.Если это имеет значение, мы обращаемся к сайту https.Возможно, Safari мудрый и пытается избежать любых потенциальных проблем с безопасностью, допуская плохой HTML?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...