2016-04-05 88 views
2

我在寫一些應該創建一些生成內容的CSS。爲什麼我看起來不能結合:visited和:: after?

.foo:visited::after { 
    display: inline; 
    content: " visited"; 
} 

但是,它沒有效果。

如果我將選擇器更改爲.foo::after,它將起作用。

同樣,我的.foo:visited樣式生效。

Safari網絡檢查員甚至將:visited::after的樣式顯示爲有效!

爲什麼我看不到我生成的內容?

回答

2

瀏覽器限制您在訪問鏈接上允許修改的樣式,如果您使用JavaScript查詢鏈接的當前顏色,甚至會對您撒謊。

爲什麼?

因爲否則,您在scumbag-advertising.example.com可以運行一堆JavaScript來查看瀏覽器歷史記錄中的網站(或至少是URL)。

如需更多信息,請參閱:visited on MDNthis longer explanation of how this privacy hole was closed

從歷史上看,CSS :visited選擇已經爲網站查詢用戶的歷史的一種方式,通過使用getComputedStyle()或其他技術通過用戶的歷史人物走路瞭解用戶訪問過哪些網站。這可以快速完成,並且不僅可以確定用戶在網上的位置,還可以用來猜測關於用戶身份的大量信息。

許多年前,瀏覽器通過限制變化和謊言來修補這個洞。

相關問題