21

これがInternetExplorerまたはChromeで機能しない理由はありますか?

<html>
    <head>
        <style>
            A {font-weight: bold; color:black;}
            A:visited {font-weight: normal; color: black; }
            .Empty {font-weight: bold; color: black; }
        </style>
    </head>

    <body>
        <a href="http://mysite">click me</a>
    </body>
</html>

クリックしたリンクは通常の状態にはならず、太字のままです。他のいくつかのブラウザでは動作します。

ケースを変更しても影響はありませんでした。に変更aa:linkても影響はありませんでした。色の変更は機能しますが、フォントの太さだけではありません。

1つの回避策は、Webカラーを無視するようにアクセシビリティを変更することでした。ソースにアクセスできないので、この方法で行う必要がありました。

4

6 に答える 6

37

実際、これは大文字と小文字の区別とは関係ありません。これはセキュリティ機能です。疑似クラスの機能は:visited、CSSの悪用を防ぐために、多くの最新のブラウザー(Fx4、IE9、Chrome)で制限されています。これについてはこちらをご覧ください。

現在、getComputedStyle()これらのブラウザでは通常、訪問されたリンクの値が、訪問されていないかのように返されます。ただし、それを回避することは簡単に想像できfont-weightます。訪問したリンクに使用すると、要素の幅が変わるため、リンクの変更を許可するブラウザfont-weight:visited実際にはセキュリティホールを修正しません。

これから保護するためにブラウザが行う特定のことがいくつかあることがわかります。

  • このwindow.getComputedStyleメソッド、およびなどの同様の関数element.querySelectorは、ユーザーがページ上のリンクにアクセスしたことがないことを示す値を常に返します。
  • などの兄弟セレクターを使用する場合:visited + span、隣接する要素(この例ではスパン)は、リンクにアクセスしていないかのようにスタイル設定されます。
  • まれなシナリオでは、ネストされたリンク要素を使用していて、一致する要素が履歴内の存在がテストされているリンクと異なる場合、要素はリンクにアクセスされていないかのようにレンダリングされます。

したがって、この問題の回避策はありません。

于 2011-11-30T19:44:35.540 に答える
2

で機能する便利な属性の1つ:visitedはですbackground-color。だから試してみてください:

:visited {background-color:red;}

:visiteda要素でも機能します。

于 2020-06-23T09:31:04.660 に答える
1

問題は履歴スニッフィングに関係しており、プライバシーの問題により、訪問したリンクのcssプロパティの変更が無効になっています。

目的の効果を得るには、次の回避策を考え出しました。訪問したリンクの背景色を変更することができます。

解決策は非常に簡単です。

  1. リンクと同じ高さと1pxの幅でリンクに背景画像を設定し、画像を水平方向に繰り返します
  2. 画像はリンクの背景と同じ色です
  3. その画像の1ピクセルを、垂直方向の中央で透明にします
  4. on:visited stateは、そのリンクの背景色をリンクのテキストカラーに変更するだけです。
  5. 背景画像がマスクしているため、背景色の1行のみが表示されます。

次に例を示します。

a:link {
    color:#000;
    background:#FFF url('../img/linethrough.png') repeat-x top left;
}

a:visited {
    background-color:#000;
    color:#000;
}
于 2013-03-09T15:09:25.450 に答える
0

CSS自体は大文字と小文字を区別しませんが、このスタイルを使用するHTMLファイルにXML宣言とXHTML doctypeがある場合、タグは大文字と小文字を区別するため、そのCSSは機能しません。「a」タグは小文字に設定する必要があります。

ここで説明されています:http: //reference.sitepoint.com/css/casesensitivevity

于 2011-11-30T19:29:21.757 に答える
-1

おそらく、色属性を変更してみて、それがまったく効果があるかどうかを確認してください。

トラブルシューティングを行うには、Chromeの開発ツールを利用して、どのスタイルが適用されているかを確認することをお勧めします。

于 2011-11-30T19:28:12.757 に答える
-2

a:link、a:visited、a:activeなどの個別の宣言が必要です。

コロンを含まない最初のスタイルを削除します。それはオーバーライドしています。a:linkに置き換えます。

于 2011-11-30T19:31:27.157 に答える