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
Форумы портала PHP.SU :: Версия для печати :: Как проставить ссылке псевдокласс :visited?
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Как проставить ссылке псевдокласс :visited?

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

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

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

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

А local storage - 2,5мб точно, чаще - 5мб без спроса можно занимать.
Итого, если на каждую новость давать аж целых 20 байт, этого хватит на 10 лет жизни. Слишком много, чтобы беспокоиться.
5. ugin_root - 13 Января, 2014 - 11:08:07 - перейти к сообщению
Мелкий
Да я знаю, что на пару лет хватит, интересно сколько эти пять мегабайт будут парситься со временем.
А вообще мне очень интересно знать, можно ли так сделать (ссылки и :visited).
6. IllusionMH - 13 Января, 2014 - 11:12:43 - перейти к сообщению
ugin_root, да там актуально только за месяц/два хранить данные, а потом на "свежие" новости становится все равно читали или нет.
А JS сейчас не улитка 15 летней давности, летает и переживать не стоит. Главное только DOM много раз по 1 элементу не дергать.
7. ugin_root - 13 Января, 2014 - 11:33:43 - перейти к сообщению
IllusionMH
сделал вариант с localstore, но всё ещё интересно есть ли способ "пометить" ссылку псевдоклассом который браузер будит запоминать, без костылей вроде iframe
8. IllusionMH - 13 Января, 2014 - 11:57:31 - перейти к сообщению
ugin_root, можно глянуть в сторону History API. После успешной загрузки статьи делать history.pushState - адресная строка меняется на ссылку на текущую статью, и браузер будет помнить эту ссылку пока не очиститься история(должен корректно примениться visited).
Но это уже зависит от того, насколько совпадает такой вариант с желаемым/допустимым.

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

 

Powered by ExBB FM 1.0 RC1