Pull to refresh

Comments 52

а не проще ли присылать назад отпарсеный коммент и ID коммента ПОСЛЕ которого его надо вставить + отступ от края?
Конечно можно, тогда его даже на сервер для парсинга слать не обязательно. Но есть одно но — не появятся новые сообщения, которые были написаны и опубликованы за время написания и публикации текущего комментария.
Да и проблему с обновлением это не решает.
Как вариант, можно было бы хранить на клиенте "watermark" - например, время или идентификатор последнего отображенного сообщения. При после - возвращать только более новые комментарии со ссылками на родительские; распихивать по дереву клиентскими скриптами.
Фактически это я и хотел предложить... Сейчас поправлю слово "ревизия", что бы не сбивало людей с толку.
У меня, честно говоря, слова "ревизия" и "разница ревизий" сассоциировались с контролем версий / diff. Только теперь понял, что вы предложили то же самое...
Лично я бы описанную мною кнопку обновления вообще прибил бы в правый или левый верхний угол страницы и сделал плавающей. Т.е. так, что бы она всегда была в том самом углу, куда не прокрути. Для всех нормальных браузеров это делается через простейший CSS, а для ненормальных — тот же JavaScript.
Для всех нормальных браузеров это делается через простейший CSS, а для ненормальных — тот же JavaScript.
Да, в общем-то, с "ненормальным" IE можно бороться и с помощью CSS. Способов много, вот первый попавшийся: http://www.mirrors.org.ua/Style/Example0…
Вот как раз этот первый попавшийся нормальный способ в IE 6 и не работает. :)
Можете проверить. Не знаю как в IE 7, нет под рукой.
Возможно, я клинический дурак, но о том, как реализовать для ие фиксацию дива, там ни слова.
Вы не сможете выполнить 'fixed' в WinIE5 и 6, но существует обход этой проблемы. Джоан Коч рассказал мне об этом трюке (из его коллекции решений). Сперва переместите 'position: fixed' в правилах стилей над 'position: absolute' и затем вставьте следующее правило чуть ниже таблицы стилей:
body>div.banner {position: fixed}

(Если баннер DIV находится внутри другого элемента, а не в основном, переместите основной элемент за этот элемент.) Эффект в том, что браузеры, которые знают о '>' (дочернем элементе) CSS, будут использовать это правило, но браузеры, которые не знают о нем, в частности WinIE5 и WinIE6, будут его игнорировать. Вместо него будет использоваться правило 'position: absolute' и меню будет на правильном месте, за исключением того, что оно будет фиксированным во время прокрутки.

Важно, чтобы вокруг '>' не было свободного пространства.


Как уже писала, это первое попавшееся. Вообще, гугл -> "css position:fixed ie". Хаки есть, я сама ими пользовалась.
Охх. Текст этот я и там видела, спасибо)
Давайте лучше я попробую своими словами пересказать, ок?
Там написано, что ie5/6 воспринимает fixed как static. В таком случае позиционирование вообще падает.
Зато ie знает position:absolute, т.е. спозиционировать в нужном месте можно, просто будет прокручиваться вместе со страницей.
Соответственно, тут годятся любые простейшие хаки. Например {position:fixed !important; position: absolute;} - нормальные браузеры запомнят первый, ие импортанта не понимает и берёт последний.
По вашей ссылке - схожий способ, только тым сыграли уже на незнании эксплорером селектора дочерних элементов.

Т.е. способа реализации на css этой самой фиксации там не предложено. Или я всё-таки чего-то не поняла?)
В последнем предложении написан поисковой запрос - вперёд.
да меня этот вопрос не то чтоб бурно интересует)
Просто вы дали ссылку, я заметила что она тут несколько не при чём. Но решила на всякий случай уточнить. Вот и всё)
Примерно так:
body{
/*
Устраняет дрожание псевдо-fixed (через top:expression) блоков в IE
(c) Воронежский, (c) Васильчиков
http://www.artlebedev.ru/tools/technogrette/html/fixed_in_msie/
*/
_background:url('_') no-repeat fixed;
}

#fix {
position:fixed;
_position:absolute; /* IE псевдо-fixed хак */
_top:expression( (document).body.scrollTop + 10 );
}
Простите, это что, способ на CSS? LOL
самий простой выход, слать дание на сервер, коментар вставлять средствами браузера
посмотри время отправки, я не в курсе как всьо устроено, но думаю эсли делать проверку по id собщения возникнут проблеми с ответами в деревях
Еще раз скажу - дождитесь новой версии Хабра, а потом делайте предложения по его улучшению.
Когда появилась эта версия сделали много предложений и тем не менее мы по прежнему пишем в трёхстрочное окошко.
И не имеем даже банальных кнопок для автоматической вставки тегов для полужирного, курсивного, подчеркнутого и цитированного текста... Что ж, ждем-с...
Моё мнение таково, что сервис должен развиваться. Хотя бы такие мелочи, как упомянутое Vox трёхстрочное окошко (кстати, у меня в нём 2 строки) нужно фиксить. Новая версия — это хорошо, но долго. Сайт должен эволюционировать постоянно.
lain_13, ипользование РСС может чуть-чуть помочь:
http://habrahabr.ru/rss/blog/habrahabr_bugs/28889/comments/
(до тех пор, покане сделают, как вы хотите)
В каком-то смысле да, но как оставлять комментарии? Ждем-с новый хабр...
Дошло, вы имели в виду способ определения новых сообщений. В принципе да, можно и от него попробовать отталкиваться, главное тогда в RSS передавать не только ссылку на сообщение, но и на его парента — иначе неясно куда его цеплять.
ааа.. да... кстати, я даж не подумал об этом. А сейчас глянул - и убедился, что не так уж оно и удобно....
а добавление - этого естественно нет там... и чтоб добавить сообщение вам прийдется все также загружать полтора метра!...
Чувак меняй работу, 3 килобайта это не дело :-)
зато пока грузиться, на работе можно много полезного сделать :)
За кнопку "Обновить" я своим бью по рукам - особо нетерпеливые пользователи задрачивают машину простым нажатием F5. Если им ещё и кнопку специальную на это вывести - прощай, железка.

В приниципе через систему етагов всё весьма неплохо реализуется.
На время обновления кнопку через скрипты можно и блокировать. %)
Применительно к данной ситуации энто зависит от реализации. И потом, машинке легче выполнить один запрос к БД, и сообщить, что новых сообщений нет (или два, отдав новые комменты), чем рендерить всю страницу по F5.
Я был, видимо, недопонят. Кнопку F5 блокировать нельзя всё равно. Но давать дополнительные возможности - плохая идея.
Дополнительные возможности применённые вместо F5 экономят 90% ресурсов сервера. А люди, которые не нажимают F5 (много ли таких?) не будут и на кнопку "обновить" жать. Лучше всего сделать как GMail/GReader и обновлять автоматом раз в сколько-то секунд, но это нужно аккуратно разрабатывать чтобы сервер не лёг...
Настолько критичным вещам я тупо обновляю запись в memcached, а веб-сервер-то и доставить можно.
Я для себя решил дорисовывать только введенный комментарий. Если юзер захочет увидеть, не появилось ли чего-нибудь еще, пусть уж обновляет страницу.
Все бы хорошо в вашей реализации, за исключением обновления рейтинга комментариев.
А если обновление рейтинга считать за изменение комментария, то практически тоже самое получится в особо активных темах. Добавится только лишняя нагрузка на клиент из-за исполнения скрипта, который будет дерево обновлять...

Решение, которое напрашивается само собой: прикрутить разбиение на страницы для большого кол-ва комментариев (я, правда, не представляю, как можно нагенерить полмегабайта комментариев). Тогда Ajax'ом будет перегружаться только текущая страница, что снизит объем трафика. Естественно, количество комментариев на страницу должно задаваться в Хабрацентре (:
если каждому коменту назначить id то просто можно передавать элементарный массив (id-рейтинг) или его аналог. Новые коменты как уже говорилось содержат id родителя, свой id(назначаемый сервером после валидации), и содержание. Передаваемая инфрмация - минимальна. Страницы по моему для коментов далеко не лучшее решение. А кнопка обновлений нужна. А еще для ускорения процесса общения где нибудь вверху нужна информация об ответах на коментарии, которая будет актуальной(ajax обновлятся через небольшой промежуток).
Пол метра... Да запросто! Вон, пойдите посмотрите на обсуждение ОпенСорсного Фар Менеджера версии 1.80... Там уже за пол метра гарантированно перевалило.
http://habrahabr.ru/blog/habraware/28559…
300Kb ещё нет. После сжатия gzip'ом - меньше 50Kb (хотя я не уверен что ХабраAJAX использует gzip).
сейчас страница весит 551 килобайт
при этом первоноябрьских комментов всего 9 штук
А вот интересно, когда дерево обновляется, с сервера грузится сформированный хтмл или массив данных (юзер, камент) и на клиенте джаваскриптом формируется?
Если готовый хтмл, то это конечно же не дело, учитывая то что для каждого камента уже есть немаленькая скрытая форма для ответа.

Думаю разница в объеме передаваемых данных от сервера к клиенту, в зависимости от варианта обновления дерева, очень существенна.
Передавать html через AJAX не кошерно. На первое время сойдет, но не для серьёзного использования.
Посмотрел я на текущий нагенеряченный код страницы... И я в недоумении... Ведь действительно после каждого коммента идет невидимая форма! Неужели её нельзя было создавать динамически средствами того же аякса?!!
наверно, можно одну имеющуюся туда-сюда мотать%)
Вот объясните, кстати дуре, а то мне любопытно стало: почему, если их много, открыть можно только одну? Зачем и в каком месте (а то я в упор не вижу) они открытую прячут?
Да вот я тоже что-то не понял. Правда у меня нет FireBug'а и ставить ради него Fx2 не тянет. Кто посмотрит, где и зачем собака порылась? Или разработчики ответят?
UFO landed and left these words here
Хм... А чего ещё можно было ожидать от человека с таким никнеймом, кроме посыла нахуй?

Ты хуй! %)
(О термине: http://lurkmore.ru/)
А теперь по делу.

По-поводу скорости инета. Выпей йаду и убийся сам. Какой совет, такой и ответ.

Полтора мегобайта камментов негенерячить можно за нехрен баловаться, особенно если с комментами передается вся разметка. А как я понял, так и происходит. :(
Поищи любой холивар Linux vs. Windows. Там и 2, и 3 метра камментов обнаружишь.

По-поводу нагрузки на сервер — при хорошем сервере мало что критично, но речь тут не о нём. Впрочем, даже у хорошего сервера есть свой предел, а при большой аудитории и таких размерах передаваемой информации в конце концов сляжет любой сервер.

По-поводу кнопки обновления. Если будет ВСЕГДА в зоне видимости, то пользоваться ей будут, ты может и не будешь, но это твоё дело, не меряй по себе остальных, окажешься в дураках.

По-поводу загрузки комментов не аяксом. Если бы было не аяксом, то при каждом ответе перегружалась бы вся страница. А это не так. Перегружаются только комменты, а, значит, действуют аякс-принципы.
UFO landed and left these words here
Народная мудрость гласит:
Не спорь с дураком, сам будешь выглядеть как дурак.

Уговорил, больше не буду с тобой спорить.
Only those users with full accounts are able to leave comments. Log in, please.