Пару недель назад я писал о проблемах со знаком "меньше". В том посте я очень гордился тем, что нашёл способ отображения этого знака без проблем. И даже собрал четыре лайка, что очень интересно с учётом того, что я обнаружил позднее.
Тестируя свои скрипты для скачивания дайари, я обнаружил удивительную вещь, а именно, что тот мой пост про знак меньше неправильно отображается у разлогиненных пользователей.
Я не буду описывать процесс расследования, а перейду сразу к выводам.
Правила отображения знака меньше и html-подстановок, о которых я писал в прошлом посте, зависят от настройки: Настройки -- Картинки (аватары, смайлы) -- Показывать или нет графические изображения смайликов.
При этом правила такие.
1. Если у пользователя опция ВКЛЮЧЕНА, т.е. текстовые смайлики заменяются на графические, то HTML-подстановки НЕ ЗАМЕНЯЮТСЯ. Вы можете спокойно писать < в тексте поста. Эта подстановка "как есть" будет передана в браузер, а он её отобразит как знак "<".
2. Если у пользователя опция ВЫКЛЮЧЕНА, то текстовые смайлики заменены не будут. Вместо этого БУДУТ заменены HTML-подстановки! В этом случае писать их напрямую уже нельзя, а надо использовать тот метод, что я описывал в прошлом посте. Иначе движок дайари сам раскроет подстановку и отправит знак "<" в браузер, что недопустимо, и может быть отображено некорректно.
Парадокс тут в том, что правила зависят не от настроек владельца дневника, а от настроек того, кто дневник смотрит. При этом у анонимов действует первый вариант. Это означает, что автор дневника не может написать такой пост, который бы все видели одинаково.
У меня, естественно, опция была выключена (вариант №2), поэтому-то я и знал о проблеме. Но проблема эта была только моя. Я уверен, что большинство пользователей, включая анонимов, имеют включённую опцию. Поэтому-то мне и интересно, что за четыре человека поставили лайк. У них, значит, опция тоже отключена, поэтому они увидели текст поста так, как я задумал?
Теперь надо понять, что делать. Я, конечно же, хочу спокойно писать знаки меньше и больше, и чтобы все их видели правильно. Но пока что не понимаю, как это сделать. Возможно, придётся воспользоваться методом CD_Eater'а, который оборачивает эти знаки в тег span, вот так:<span><</span>. Это нарушает правила вёрстки, но даёт предсказуемый результат: знаки отображаются корректно. Теперь надо проверить, что это одинаково работает во всех дизайнах и при всех настройках.