10

W3.org CSS仕様には、次のように記載されています(私の強調)。

  • :link疑似クラスは、まだアクセスされていないリンクに適用されます。
  • :visited疑似クラスは、ユーザーがリンクにアクセスすると適用されます。

2つの状態は相互に排他的です。

つまり、:linkセレクターに適用されるスタイルは、アクセスされていないリンクにのみ適用する必要があります。ただし、これが当てはまる唯一のプロパティはであるように見えますcolor。フォントサイズや背景などを:linkセレクターに適用すると、すべてのリンクが対象になります。

ページのさらに下に、次のようなメモがあります。

ノート。スタイルシートの作成者は、:linkおよび:visited疑似クラスを悪用して、ユーザーの同意なしにユーザーがアクセスしたサイトを判別することができます。

したがって、UAは、すべてのリンクを未訪問のリンクとして扱うか、訪問済みのリンクと未訪問のリンクを異なる方法でレンダリングしながら、ユーザーのプライバシーを保護するための他の手段を実装する場合があります。

ただし、私が知る限り、これはJavascriptによって返されるスタイルにのみ適用され、スタイル自体の表示には適用されません。

これが問題を示すJSフィドルです。ブラウザはここの仕様から逸脱していますか、それとも私が欠けているものがありますか?

4

2 に答える 2

2

この線、

「したがって、UAは、すべてのリンクを未訪問のリンクとして扱うか、訪問済みのリンクと未訪問のリンクを異なる方法でレンダリングしながら、ユーザーのプライバシーを保護するための他の手段を実装する場合があります。」

JavaScriptによって返されるスタイルにのみ適用されません—それはそれが聞こえる通りです。これは、ブラウザが特定のプロパティを:visited完全に無視する可能性があることを意味します(これがこの場合に起こっていることです)。を含む要素のサイズが大きくなるため、リンクfont-sizeのプロパティを異ならせると:visited、ブラウザによって実装される他のセキュリティ対策が損なわれます。

ブラウザは、必要に応じて、スタイルを適用せずに寸法を再計算することを選択できます。:visited当然、これは特定のプロパティを許可しないよりも作業が多く、パフォーマンスが低下します。訪問したリンクと訪問していないリンクを区別するために異なるフォントサイズや背景などを使用する必要が実際にはないという事実に基づいて決定が下されたことは明らかであり、通常、ほとんどの開発者は色をわずかに変更することに固執します。

いいえ、仕様から逸脱しているわけではなく、許容される例外を利用しています。

于 2011-10-17T14:28:20.210 に答える
0

仕様から私が理解していることから、ブラウザは訪問済みステータスの乱用を避ける:linkように扱っています。aしたがって、javascriptの有無にかかわらず、すべてのリンクに実際に適用されるスタイルは:linkであり、:visited訪問したときにスタイルをオーバーロードするだけです。

于 2011-10-17T14:07:54.317 に答える