Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Виной всему <DOCTYPE>


Автор: Black 3.6.2005, 14:16
Виной всему эта строчка:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">

Она не позволяет нормально работать методу scrollTop.
Значения то метод возвращает, а вот динамически их менять нельзя, тем самым не получается заставить scroll прокручиваться по щучьему велению, по моему хотению.

Если

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">

убрать, то все работает как я хочу.

Ну и что сделать. Хочется то держать стандарт, т.е. DOCTYPE хочется оставить в документе.
Хотя руки уже чешутся его удалить. Из-за него я потерял 2 часа. Так как не мог понять почему ничего не работает???

P.S. на форуме scroll в последнее время обсуждают smile после того как XMLHttpRequest постирали.
Теперь и scroll постираем.

Автор: Black 3.6.2005, 15:20
Все равно ничего не пойму...

Такая констукция работает:

Код

<script type="text/javascript">
<!--
var d=document.getElementById("test");
var tmr=window.setInterval(function() {
 d.scrollTop+=3;
}, 1000);
//-->
</script>


а такая нет:

Код

<script type="text/javascript">
<!--
var d=document.getElementById("test");
var tmr=window.setInterval(function() {
 d.scrollTop==d.scrollHeight;
}, 1000);
//-->
</script>


d.scrollTop==d.scrollHeight - разве так нельзя писать ????
Добавлено @ 15:25
О придумал

Код

d.scrollTop+=d.scrollHeight;


так работает smile

Автор: Sardar 3.6.2005, 15:26
Просто парни из W3C иногда такую муть придумают, по началу не логично, но если следовать их мысли, то в целом "принять можно".

Хотя писать в Quirksmode (режим совместимости, без доктайпа) не стоит, нет уверенности что во всех браузерах будет одинакого выглядеть. Хотя и с доктайпом разные бродилки рендерят по разному smile
Интересно что с каждой новой спецификацией (X)HTML отменяют всё больше тегов и аттрибутов smile Сейчас можно весь сайт сверстать юзая div, span + стили, т.е. отрисовать это можно, но структуры в документе не будет.

О скроле, скрол будет работать без проблем, но только не для body(забыл по чему, но было логичное обьяснение smile ). Скорее всего ошибка в скрипте, выкладывай код.
Добавлено @ 15:27
Цитата(PHP @ 3.6.2005, 14:20)
d.scrollTop==d.scrollHeight - разве так нельзя писать ????
Добавлено @ 14:25

Это сравнение, а не присваивание smile

Автор: Black 3.6.2005, 16:00
Sardar

Цитата
Хотя писать в Quirksmode (режим совместимости, без доктайпа) не стоит, нет уверенности что во всех браузерах будет одинакого выглядеть.

т.е. надо убирать тег <DOCTYPE> для страниц содержащих много JavaScript'ов

Цитата
Это сравнение, а не присваивание

и правда... с этим доктайпом у меня уже глюки пошли. Пойду ударюсь головой об стенку может поможет smile

Цитата
весь сайт сверстать юзая div, span + стили smile

я свой сайт тоже на слоях сделал. Использовал три тега

Код

<div></div>
<img />
<br />

+ CSS
Получилось без JavaScript'a

На дивах хорошо сделан сайт:
http://www.softbeta.com/
и
http://hunter.vingrad.ru/



-------------------------
теперь скрипт:

Код

function NewMess()
{
            Chat = top.chat.document.getElementById('chat');
            Chat.scrollTop=Chat.scrollHeight;
}


запускается всякий раз когда приходят новые сообщения в чат

chat - фрейм в котором лежит окно куда пишутся фразы.
chat - название id для div'a куда добавляются сообщения чата.


Содержимое фрейма chat:

Код

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style>разные там</style>
<script>разные там</script>
</head>

<body>

<div style='position:relative;width:100%;height:100%;overflow:auto;' id='chat'></div>

</body>
</html>


Если без доктупе, то все работает, а если с ним, то нет эффекта smile

Автор: Sardar 3.6.2005, 16:53
Цитата(PHP @ 3.6.2005, 15:00)
т.е. надо убирать тег <DOCTYPE> для страниц содержащих много JavaScript'ов

Наоборот, и при чём здесь "много скриптов" ?
Цитата(PHP @ 3.6.2005, 15:00)
я свой сайт тоже на слоях сделал. Использовал три тега

Да, получилась хорошая инфа как оторбразить контент, но структуры нет(попробуй распарсить такой документ и вывести summary, поймёшь о чём я)

По поводу чата, крути не окно chat, а вложи туда ещё слой и в этот слой клади мессаги. Изменяй scrollTop этого вложеного слоя.

Автор: Иль 3.6.2005, 17:22
PHP-DIRECTOR, дело не в скрипте, а как им пользоватьсяю. Если я не ошибаюсь, ты глюк ловишь только в Gecko, правильно? Просто эта группа браузеров имеет два режима работы, их можно назвать режим ИЕ без <DOCTYPE> и режим W3C, те полного соответствия стандартам - называется "ничего знать не желаю и про какой-то ИЕ вообще не слышал". Сами Мазиловцы говорят что если хорошо намутить, то например FX(лиса) сама свалится в режим ИЕ, хотя на практике я не встречал.
Если что не так - поправте...

А вообще в ИЕ у меня глюк с <DOCTYPE> еще не разу не проявлялся - у вас есть другие данные?

Давайте здесь сложим все встретившиеся с ним глюки.

Автор: Aliance 3.6.2005, 17:53
Цитата
А вообще в ИЕ у меня глюк с <DOCTYPE> еще не разу не проявлялся - у вас есть другие данные?

У меня пару раз... в исключительных ситуациях... остальными браузерами не пользуюсь :-)

Нужно Quirksmode почитать... может там что есть..

Автор: Black 3.6.2005, 21:55
Иль
в IE с <DOCTYPE> тоже не работает.

Я так понимаю свойства scrolla'а являются устаревшими и работают в режиме совместимости со старыми браузерами а не со стандартами от W3C

А стандарты включаются при использовании <DOCTYPE>

Автор: Иль 3.6.2005, 21:57
Ничего себе, не знал. Хорошо что сказал!

Автор: Sardar 3.6.2005, 22:20
Цитата(PHP @ 3.6.2005, 20:55)
свойства scrolla'а являются устаревшими

Вроде бы устаревшими они не являються и нормально работают с доктайпами и без, правда требуют подхода, например body скролиться не будет smile

Автор: Иль 3.6.2005, 22:50
Да я тоже думаю, что ИЕ плювать на доктайпы
Добавлено @ 22:54
по опыту конечно. Сейчас то уже по очереди тестируешь, а раньше наработаеш в ИЕ и проверяешь в Gecko, так сто раз на этом доктайпе горел, до белого коленя доходил. Еще про JS не знал ничего, а уже научным тыком вывел - убираем доктайпы

Автор: Black 3.6.2005, 23:01
Иль
Sardar
Все верно говорил Sardar.

Методы не устаревшие и работают. Моя ошибка была как всегда в самом элементарном.
Для div'a я установил height в процентах - поэтому и не работало.

Если я укажу значение в px тогда работает.
Т.е. надо так:

position:relative;height:100px;overflow:auto;

но не так:

position:relative;height:100%;overflow:auto;

Теперь работает и с <DOCTYPE>
Проверил в IE 6.0 и в FireFox 1.0.4

Автор: Opik 4.6.2005, 08:39
PHP-DIRECTOR
а если нужно именно 100%? smile

Автор: Black 4.6.2005, 09:55
Opr
вот в этом и проблема. Сейчас пытаюсь скриптом выяснять размер окна и ставить этот размер в стиль к диву где содержится сообщения чата.

Мне то тоже надо 100%. А с ним почему-то не работает smile

Если получится выложу код.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)