3

によって追加された CSS で奇妙な動作に気付いていGM_addStyle()ます。次のユーザースクリプトがあります。

// ==UserScript==
// @name        Reddit
// @namespace   http://example.com
// @include     http://www.reddit.com/
// @grant       GM_addStyle
// @version     1
// ==/UserScript==

GM_addStyle("a:visited { background-color: yellow !important; }");

現在、動作がすべてのリンクで機能するか、リンクなしで機能することを期待していますが (セキュリティ パッチにより)、一部のリンクでは機能するが他のリンクでは機能しないという一貫性のない動作が得られます。

ホット/トップ/ウィキでは機能しますが、他のリンクでは機能しません

誰かが私のために上記の動作を説明できますか?

4

1 に答える 1

4

Privacy と MDN の :visited セレクターから:

訪問したリンクに適用できるのは、次のプロパティのみです。

  • 背景色
  • border-color (およびそのサブプロパティ)
  • 輪郭色
  • 塗りと線のプロパティの色の部分

さらに、訪問済みリンクに設定できるプロパティであっても、未訪問リンクと訪問済みリンクの間の透明度を変更することはできません。そうしないと、rgba() または hsla() の色値または透明度を使用できるようになります。キーワード。

どうやらこれは、Firefox で背景色を変更するには、まずリンクに背景が必要であることを意味します (:visitedセレクタを使用して追加することはできません)。そのため、訪問したリンクの背景色のスタイルを設定する前に、背景を設定してください。

これは私にとってはうまくいきます:

// ==UserScript==
// @name        _Reddit, style visited links
// @include     http://www.reddit.com/*
// @grant       GM_addStyle
// @version     1
// ==/UserScript==

GM_addStyle (
      /* For precision, only prime the desired links, that don't
        otherwise have a BG.
      */
      "a.title { background: white; }"
    + "a:visited { background-color: yellow !important; }"
);


私が明示的に興味を持っていたリンクを「プライミング」しただけで、まだ背景がないことに注意してください。したがって、a.title {...代わりにa {....


また、スタイルを変更するだけの場合は、通常、スタイリッシュの方が適しています (パフォーマンスとセットアップの容易さ)。

于 2013-07-20T19:51:39.037 に答える