4

しばらくの間、私がよく使っていたブックマークレットが Firefox で壊れてしまいました。他のブラウザにも当てはまるかもしれませんが、私は Firefox でのみ使用しています。

問題のブックマークレットは、 squarefreeの「アクセス済みを非表示」です。

これは(適切に)機能していなかったので、自分でやることにしましたが、最終的には次のようになりました。

javascript:(
function(){
var css=document.createElement('style');
css.type='text/css';
var styles='a%3Avisited{display%3Anone !important}';
css.appendChild(document.createTextNode(styles));
document.getElementsByTagName("head")[0].appendChild(css);
})();

読みやすさのためにいくつかの行に分割されていますが、それ以外は私が使用しているものから変更されていません。
問題は、インライン スタイルシートをヘッドに追加することであり、リンクの外観を変更することはありません。:visitedただし、 (またはここに表示されているように)を削除する%3Avisitedと、スタイルシートはリンクに適用され、非表示になりますが、この時点での訪問状態に関係なく非表示が行われることは明らかです。

ここでの結論は、に問題があると私が信じていることです.about:configで:visitedboolを反転layout.css.visited_links_enabledしても、訪問したリンクからスタイリングを大規模に削除するだけなので、予想通り何もしません. これは望ましくありません。:)

おそらく、squarefree ブックマークレットがまだその内容を先頭に追加していることに注意する価値があります。これもまったく効果がありません。

私は途方に暮れています。ブックマークレットを介して訪問したリンクを非表示にすることはできますか?

4

3 に答える 3

4

の動作は:visited、セキュリティ上の理由から数年前に変更されました...コード (および squarefree ブックマークレット) は古いブラウザーで動作する可能性がありますが、ブラウザーの最新バージョンでは同じ効果を得ることができません。

https://blog.mozilla.org/security/2010/03/31/plugging-the-css-history-leak/からのメモ

  • 訪問したリンクは、前景、背景、輪郭、境界線、SVG ストローク、および塗りつぶしの色のみが異なる場合があります。他のすべてのスタイル変更は、リソースをロードするか、ドキュメント内のスタイル設定されたコンテンツの位置またはサイズを変更することにより、リンクの訪問性を漏らします。これを検出して、訪問したリンクを識別するために使用できます。

その他の参考資料:


CSS の場合、次のようなものを試すことができます。

a:visited {
    color: white !important; /* It would hide the text if the background is white too */
    /* or some better css approach for your requirement */
}
于 2013-02-27T10:43:19.310 に答える
1

セキュリティ上の理由から、ブラウザはリンクの「訪問済み」ステータスがJavaScriptによって読み取られないようにするための措置を講じています。これは、CSSを介して「:visited」に適用するスタイルがDOMに登録されないことを意味します。

色やテキストの装飾などを変更でき(おそらく)、ユーザーには変更が画面に表示されますが、結果はJSに読み取れません。

なぜ「display:none」を適用しないのですか?ブラウザがページからリンクを削除すると、divの高さなどのページのレイアウトが変更され、アクセスされたかどうかを判断するための潜在的なサイドチャネルが提供される可能性があるためです。そのため、「display:none」は適用されません。

私があなたの目標のために提案できる最善の解決策は、背景色と一致するようにリンクの色を変更するか、おそらく不透明度を変更することです。

于 2013-02-27T08:42:29.243 に答える
1

javascriptでどのリンクにアクセスしたかがわかりません。これは、ユーザーのプライバシーを保護するために行われました。セキュリティ上の理由から、アクセスしたリンクのスタイルを設定したり、スタイルを作成したりしても、現在の主要なブラウザでは機能しないと思います。

于 2013-02-27T07:20:51.890 に答える