document.querySelectorAll('a:visited') doesn't work
Asked Answered
C

1

6

document.querySelectorAll('a:visited') always returns empty NodeList, even if the DOM has some visited links.

I have tried it in Chrome. Is there any know bug or is it expected behavior?

While :visited works perfectly fine if I use it in the style sheet instead of querySelectorAll.

a:visited{
    color:yellow;
}

I think pseudo classes are allowed as the parameter of querySelectorAll().

Casar answered 16/4, 2013 at 6:52 Comment(2)
I think it's not possible due to design - otherwise any site would be able to essentially read my history.Americium
Security reasons. One could simply check whether you visited a website. That's also the reason why you cannot use background-images in :visited anymore, see hacks.mozilla.org/2010/03/…Pablo
A
10

I can't find any source citing this behaviour specifically for Chrome, but this sort of thing is usually done to prevent code on the page from being able to access user history, which is a privacy concern.

The Selectors API has a section dedicated to this issue. Here's a small, relevant snippet:

History theft is a potential privacy issue because the :visited pseudo-class in Selectors allows authors to query which links have been visited.
...
As defined in Selectors..., user agents may treat all links as unvisited links.

Anus answered 16/4, 2013 at 7:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.