XHTML + CSS + Internet Explorer 6

lalala2007
На сайте с 31.10.2007
Offline
27
788

Возникла следующая проблема.

Делаю сайт, верстка: XHTML + CSS. Использую в HEAD тэг base href с доменом сайта, чтобы было удобнее из разных разделов сайта ставить ссылки на страницы. Таким вот образом у меня например подключается и файлик с CSS стилями и путь к нему прописан соответственно /style/style.css. Все работает правильно, но, есть проблема - Internet Explorer 6.

Он все правильно подключает и отображает так же как и остальные браузеры. Но нельзя выделить какой то определенный кусочек текста для копирования в IE 6. Можно только выделять сразу весь блок с контентом или же блок с навигацией, что не очень удобно, так как есть примеры кода для копирования.

Методом научного тыка (c) я нашел несколько путей решения проблемы, но они меня не очень устраивают:

1. Нужно убрать base href и прописывать полность все ссылки в том числе и http://site.ru/style/style.css по всем страницам сайта, что для меня есть плохо

2. Убрать !DOCTYPE - так тоже все работает нормально во всех браузерах. Какой !DOCTYPE точно не помню. Обычный XHTML 1.0 Transitional ну и плюс там ниже какой то <xmlns. Короче все сайты такой используют =) Убирать !DOCTYPE, понятное дело, неправильно.

3. Еще один вариант - писать не base href, а basehref, то-есть слитно. Все работает прекрасно во всех браузерах, но насколько я знаю это неправильно с точки зрения XHTML. Поэтому использовать его я тоже не хочу.

4. Последний вариант - забить на IE, но 50% посетителей все таки пока что пользуются именно этим браузером и мне не хочется создавать этим пользователям неудобства.

Кто сталкивался с подобной проблемой или просто есть предположения что можно сделать - посоветуйте пожалуйста.

Спасибо

a.fatman
На сайте с 15.01.2006
Offline
127
#1

А зачем вам base href для указания пути к CSS?

Если у вас CSS-файл лежит в http://example.com/style/style.css, то вы можете указывать точно так же путь /style/style.css

lalala2007
На сайте с 31.10.2007
Offline
27
#2

Оно то так, но просто так ведь удобнее ссылки проставлять и пути к файлам, сразу от корня сайта. Получается везде одинаковый путь к файлам и страницам. IE 6 как то неправильно реагирует на base href, хотя когда писать слитно basehref, то нормально все, но это неправильно.

Я нашел еще один вариант решения проблемы - условные комментарии :) вот пример:

<!--[if IE]><basehref="http://site.ru/" /><![endif]-->

<![if !IE]>

<base href="http://site.ru/" />

<![endif]>

Как видите блок для ИЕ выглядит как обычный комментарий и поисковики забьют на него, а второй base href роботы проиндексируют правильно и соответственно все страницы тоже.

В принципе этот вариант больше всего пока что подходит, но... у меня вся разметка документа соответствует XHTML 1.0 Strict и даже XHTML 1.1. С CSS тоже все ок. А если использовать условные комментарии, то валидатор ругается и, соответственно нужно использовать DOCTYPE не Strict, а Transitional - обидно :(

Проблема только с IE 6. Что можно сделать? Есть какой-нибудь CSS-атрибут, который позволяет сделать блок редактируемым или что-то типа этого? а то оно сразу всю колонку выделяет, а мне нужно чтобы хотя бы с блоками с примерами кода было все нормально, чтобы посетитель мог выделить только его и скопировать себе.

Придется перечитывать мануал по CSS 2 - может и найду решение проблемы. Если найду - обязательно отпишусь, мож кому тоже пригодится :) Иначе придется менять DOCTYPE на Transitional...

lalala2007
На сайте с 31.10.2007
Offline
27
#3

Ура! Нашел. Как и обещал пишу как решил проблему.

Люди советуют для base использовать закрывающий тэг. То-есть что-то типа:

<base href="http://www.site.ru/"></base>

Это 100% валидно даже в XHTML 1.0 Strict - тока что проверил. Дома попробую испытать это на IE 6, но раз уж у людей все нормально, то и у меня тоже будет так же.

Ну вот, и сам узнал как пофиксить этот баг и может кому то пригодится :)

Теперь у меня 100% валидная XHTML 1.0 Strict и XHTML 1.1 разметка.

И не верьте людям которые используют Transitional DOCTYPE и говорят что не все браузеры Strict поддерживают. Если захотеть, то можно найти решение проблемы и написать полностью валидную разметку, соответствующую XHTML Strict 😎

Всем спасибо за внимание. Проблема решена

Ткач
На сайте с 29.04.2007
Offline
95
#4

lalala2007, молодец, но в твоем случае бэйс лишний всё равно)

Разработка и создание сайтов. Красиво, функционально, недорого. (http://time-online.ru/) ICQ 388-474-890)
lalala2007
На сайте с 31.10.2007
Offline
27
#5

2 Ткач

Почему лишний?

Так я прописал себе Base с доменом сайта и могу и на главной странице, и на странице, которая находится, например, в папочке articles обратиться к файлу со стилями одинаково /style/style.css, в не зависимости от того где находится сама HTML-страница. Иначе мне пришлось бы писать что-то типа ../style/style.css или вообще http://site.ru/style/style.css. То же самое относится к картинкам и прочим файлам.

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

Или хочешь сказать что я зря столько мучался с base тэгом, чтобы вот так просто отказаться от своей затеи? 😎

Если ты пользуешься каким то другим способом и считаешь что он лучше чем base href, то аргументируй, пожалуйста :)

a.fatman
На сайте с 15.01.2006
Offline
127
#6
lalala2007:
Так я прописал себе Base с доменом сайта и могу и на главной странице, и на странице, которая находится, например, в папочке articles обратиться к файлу со стилями одинаково /style/style.css, в не зависимости от того где находится сама HTML-страница.

Точно так же можете обратиться и не указывая base href, если /style/style.css находится в корне сайта. Попробуйте.

lalala2007
На сайте с 31.10.2007
Offline
27
#7
a.fatman:
Точно так же можете обратиться и не указывая base href, если /style/style.css находится в корне сайта. Попробуйте.

если с главной страницы, то так и будет. а если посетитель будет находиться например на странице /articles/article1.html, то тогда файл со стилями надо подключать уже так ../style/style.css То же самое относится и к страницам. Если просто указать /articles/article2.html со страницы article1.html то получится что при клике юзер перейдет на /articles/articles/article2.html, которой не существует. Разве не так?

[Удален]
#8

Если в урле указать "/style/style.css" с главной или со страницы "articles/article.html" то в обоих случаях это будет:

http://yoursite.ru/style/style.css

Т.к. предваряющий слэш обозначает корень сайта.

lalala2007
На сайте с 31.10.2007
Offline
27
#9

да? просто я без слэша всегда делал. что ж, попробую - спасибо за совет ;)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий