0
我瞭解隱私問題,但在this article Mozilla聲明他們對querySelector()
和getComputedStyle()
說謊。爲什麼瀏覽器限制:訪問選擇器?
如果他們已經對網站撒謊,爲什麼要限制:visited
只是簡單的顏色?使用相同的方法仍無法從網站隱藏完整樣式?
我瞭解隱私問題,但在this article Mozilla聲明他們對querySelector()
和getComputedStyle()
說謊。爲什麼瀏覽器限制:訪問選擇器?
如果他們已經對網站撒謊,爲什麼要限制:visited
只是簡單的顏色?使用相同的方法仍無法從網站隱藏完整樣式?
限制可應用於已訪問鏈接的樣式可防止它們以可通過getComputedStyle()
查詢的方式影響無關元素的佈局,這種方式不會在沒有祕密計算整個頁面佈局的情況下欺騙鏈接未被訪問,這在性能方面將非常昂貴。這與:visited + span
不再適用(甚至在:visited
中仍然允許的屬性不一樣)。
考慮這方面的證據的概念,在其中您可以點擊一個鏈接切換模擬其visitedness類的名稱,並瞭解:link
和:visited
之間切換會影響佈局:
var a = document.querySelector('a'),
p = document.querySelector('p + p');
a.addEventListener('click', function(e) {
a.className = a.className == 'unvisited' ? 'visited' : 'unvisited';
console.log('a is now ' + a.className + '; top pos of following p is now ' + p.getBoundingClientRect().top);
}, false);
a.unvisited {
font-size: 1em;
}
a.visited {
font-size: 2em; /* A property not normally allowed on :visited */
}
<p><a class="unvisited" href="#">Toggle visitedness</a>
<p>Another paragraph
謝謝。對於改變其他元素位置的樣式有意義。是否有一個原因'overline''直通''下劃線'陰影''不透明'和其他屬性不影響其他元素也被忽略? – DD3R
@ DD3R:不透明會導致創建可能影響z-index佈局的堆疊上下文。我不知道爲什麼文本裝飾(文字修飾和文字陰影)不在允許的屬性列表中。 – BoltClock