Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как проставить ссылке псевдокласс :visited?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: при помощи JS
ugin_root
Отправлено: 13 Января, 2014 - 10:08:06
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


Помог: 5 раз(а)




Ситуация следующая, есть сайт на котором очень много новостей и нужно каким-то образом запоминать что новость прочитана. Весь сайт написан на JS и новость считается прочитанной, после того как её развернули (как спойлер), т.е. страница с новостью не открывается и не перезагружается. Из-за этого не получается проставить стиль для новостей которые уже были прочитаны по псевдокласcу :visited. Регистрации нет (и не будит). Хранить эту информацию в куках или локальном хранилище не вариант, слишком много новостей. Есть ли такой псевдокласс который можно будит изменять программно? По тому что :visited менять и читать нельзя. Есть мысль на счёт того что-бы открывать программно нужную ссылку в iframe и тогда браузер сам проставит параметр :visited, но это как-то очень некрасиво, да и если нужна будит функция пометить все как прочитанные то грузить в iframe ~50000 новостей вообще не вариант.
 
 Top
caballero
Отправлено: 13 Января, 2014 - 10:34:57
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Хранить эту информацию в куках или локальном хранилище не вариант, слишком много новостей.

хранить нужно только для прочитанyых. И сколько там их юзер прочитает.

A если по уму то сгенерить куку с идентификатором и для него хранить отмеченыве в БД


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
ugin_root
Отправлено: 13 Января, 2014 - 10:47:06
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


Помог: 5 раз(а)




caballero
Ну насчёт сколько прочитает сложно сказать, за месяц может тысяча, их в основном не читают, а просто просматривают журналисты, что-бы быть в курсе событий (работаю в новостном агенстве).
На счёт куки и хранения в БД это самая первая моя мысль, но это метод для нелинивых. А я очень ленивый и хочу сделать всё в 2 строчки кода, в первой проставлять параметр :visited, а во второй прописать стили для посещённых. Это было-бы идеальным вариантом, просто я способа не могу придумать лучше чем загружать страницу в iframe... И думал может кто-то знает как сделать подобный фокус со ссылками или может есть такое свойство (или псевдокласс), у ссылок, которое можно программно изменять.
 
 Top
Мелкий Супермодератор
Отправлено: 13 Января, 2014 - 10:53:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




ugin_root пишет:
за месяц может тысяча

А local storage - 2,5мб точно, чаще - 5мб без спроса можно занимать.
Итого, если на каждую новость давать аж целых 20 байт, этого хватит на 10 лет жизни. Слишком много, чтобы беспокоиться.


-----
PostgreSQL DBA
 
 Top
ugin_root
Отправлено: 13 Января, 2014 - 11:08:07
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


Помог: 5 раз(а)




Мелкий
Да я знаю, что на пару лет хватит, интересно сколько эти пять мегабайт будут парситься со временем.
А вообще мне очень интересно знать, можно ли так сделать (ссылки и :visited).
 
 Top
IllusionMH
Отправлено: 13 Января, 2014 - 11:12:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




ugin_root, да там актуально только за месяц/два хранить данные, а потом на "свежие" новости становится все равно читали или нет.
А JS сейчас не улитка 15 летней давности, летает и переживать не стоит. Главное только DOM много раз по 1 элементу не дергать.

(Отредактировано автором: 13 Января, 2014 - 11:13:00)

 
 Top
ugin_root
Отправлено: 13 Января, 2014 - 11:33:43
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


Помог: 5 раз(а)




IllusionMH
сделал вариант с localstore, но всё ещё интересно есть ли способ "пометить" ссылку псевдоклассом который браузер будит запоминать, без костылей вроде iframe
 
 Top
IllusionMH
Отправлено: 13 Января, 2014 - 11:57:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




ugin_root, можно глянуть в сторону History API. После успешной загрузки статьи делать history.pushState - адресная строка меняется на ссылку на текущую статью, и браузер будет помнить эту ссылку пока не очиститься история(должен корректно примениться visited).
Но это уже зависит от того, насколько совпадает такой вариант с желаемым/допустимым.

Непосредственно вешать псевдоклассы - нельзя.

(Отредактировано автором: 13 Января, 2014 - 12:04:03)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB