...хотя это не делает менее бестолковой

 Но так уж исторически сложилось.
При раскрытии сообщения его дата сравнивается с меткой в куках. Если метка более ранняя, то она заменяется на дату раскрытого сообщения. С этого момента, все сообщения раньше этой даты считаются прочитанными.
То есть если начать читать форум с конца (с самого свежего сообщения), то весь форум окажется отмечен прочитанным.
Если понимать эту схему, то получается достаточно удобно. Вопрос в том, как сделать удобно и для тех, кто ее не понимает?
                            
 
            
                                        
                            
                        
                RE: как сделать удобно и для тех, кто ее не понимает? 
                                    Дим(м)
                                08/08/2016 17:13
                #
             
            
                Например, хранить отдельную метку для каждой темы форума, а не одну на весь форум.
 
Да, со временем их число будет увеличиваться. Но на этот случай можно придумать какой-то механизм очистки. Например, при загрузке форума удалять из куков все метки старше 12 месяцев. (и, соответственно, все темы старше 12 месяцев никогда не показывать как непрочитанные)
 
Но проблема у "топик-стартера", как я понял, не в незнании "схемы", а в том, что статус прочитанности изменяется при нажатии Back.
По идее, браузер ведь должен был закэшировать страницу и при нажатии Back - просто показать её "как было". Но то ли кэширование не работает, как должно, то ли функция, выделяющая непрочитанные темы, вызывается в т.ч. и при нажатии Back. А раньше ("до появления Win10 у latan"), судя по всему, этого не происходило.
                            
            
                                        
                            
                        
                Разумно 
                                    Loki
                                09/08/2016 12:33
                #
             
            
                Переделал механизм в соответствии с вышеизложенной логикой. Теперь в пределах полугода каждая тема отслеживается отдельно.
 
Что касается самой темы, то мне представляется маловероятным, чтобы все браузеры меняли свое поведение в новой ОС. Скорее тут дело в чем-то другом.
                            
            
                                        
                            
                        
            
                Теперь все темы отображаются как не прочитанные. :rage:
 
Такие новации следует вводить совместно с кнопкой "Отметить все темы как прочитанные" и никак иначе.
                            
            
                                        
                            
                        
                добавил кнопку на главной форума  (-)
                                    Loki
                                09/08/2016 16:09
                #
             
            
                
                            
            
                            
                     
     
                     
            
                        
                Для обратной совместимости стоит ... 
                                    Дим(м)
                                09/08/2016 14:45
                #
             
            
                ... использовать старое (глобальное) значение маркера, если индивидуальный маркер для проверяемой темы отсутствует.
 
Что-то типа такого:
var topicTS = getLastViewTimestampForTopic(currTopic);
if (!topicTS) {
    topicTS = getForumLastViewTimestamp();
    if (currTopic.lastModified > now - 6 month) {
        saveLastViewTimestampForTopic(currTopic, topicTS);
    }
}
if (topicTS && currTopic.lastModified > topicTS) {
    markAsUnread(currTopic);
}
 
                             
            
                     
            
                        
                Теперь, вроде бы, нормально 
                                    latan
                                15/08/2016 01:41
                #
             
            
                Понаблюдаю ещё.