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