2013-04-16 84 views
2

document.querySelectorAll('a:visited')總是返回空的NodeList,即使DOM有一些訪問過的鏈接。document.querySelectorAll('a:visited')不起作用

我已經在Chrome中試過了。是否有任何知道的錯誤或預期的行爲?

雖然:visited工作得很好,如果我在樣式表中使用它而不是querySelectorAll。

a:visited{ 
    color:yellow; 
} 

我覺得僞類允許爲querySelectorAll()參數。

+0

我認爲這是不可能的,因爲設計 - 否則任何網站將能夠實質上閱讀我的歷史。 – Esailija

+1

安全原因。你可以簡單地檢查你是否訪問過一個網站。這也是爲什麼你不能在':visited'中使用背景圖片的原因,請參閱http://hacks.mozilla.org/2010/03/privacy-related-changes-coming-to-css-vistited/ – Zeta

回答

6

我找不到任何引用此行爲的來源,專門針對Chrome,但通常這樣做是爲了防止頁面上的代碼能夠訪問用戶歷史記錄,這是一個隱私問題。

Selectors API有專門針對此問題的a section。這裏有一個小的,相關的片段:

歷史盜竊是一個潛在的隱私問題,因爲在選擇器的:visited僞類允許作者來查詢已訪問過哪些鏈接。
...
如選擇器...中定義的,用戶代理可以將所有鏈接視爲未訪問鏈接

相關問題