編集:投稿の下部にあるソリューション。
JQuery を使用して Facebook ニュース フィードの特定のフィード アイテムを除外および変更するカスタム GreaseMonkey スクリプトを作成しました。それはうまく機能していますが、この特定のものは適切に機能していません:
$("h6.uiStreamHeadline:contains('shared') a[id^='js_']").html("someone else");
これが行うことになっているのは、ニュース フィードで特定のアイテムが共有されているページの名前を置き換えることです。たとえば、「John Smith が Funny-Pictures-For-Everyone の写真を共有しました」と表示されている場合、この関数はそれを「John Smith が他の誰かの写真を共有しました」に変換します。
これが私の他の「フィルター」のいくつかです:
$("h6.uiStreamHeadline:contains('was tagged in')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (someone tagged somewhere else)</i></li>");
$("h6.uiStreamHeadline:contains('were tagged in')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (multiple friends tagged somewhere else)</i></li>");
$("h6.uiStreamHeadline:contains('commented on her own')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (someone commented on their own stuff)</i></li>");
$("h6.uiStreamHeadline:contains('commented on his own')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (someone commented on their own stuff)</i></li>");
$("h6.uiStreamHeadline .wallArrowIcon").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (Wall-to-Wall post)</i></li>");
$("h6.uiStreamHeadline:contains('commented on a')").closest("li").html("<li><i style='color:#CCCCCC;margin-left:15px;'>Post Hidden (people commenting on something i probably don't care about)</i></li>");
これらはすべて問題なく機能し、ページが読み込まれると置き換えられます。ただし、問題の関数は、操作するまで更新されません。たとえば、ページの名前が「Funny-Pictures-For-Everyone」の場合、マウスをその上に置くと、Facebook の小さなポップアップが表示され、名前が「someone else」に変わります。ページが読み込まれたときに変更されない理由がわかりません。タイミングの問題なのかなと思いますが、どうすればいいのかわかりませんし、残りのすべてがうまくいく理由もわかりません。
問題の機能が他のほとんどの機能とは少し異なることは理解しています。それらの残りの部分は、使用して投稿全体を置き換えます。closest("li")
私が問題を抱えている<a></a>
ものは、選択しているタグ内の内部 HTML またはテキストを置き換えることのみを目的としています。
助けてくれてありがとう。
この問題に対する実用的な解決策と思われるものを思いつきました:
Brock Adams が以下で述べたように、選択しようとしていた ID 属性は、操作するまで要素に存在しません。そのため、ページの読み込み時に何かを見つけなければなりませんでした。の内部 HTML を調べたところ、選択したい 1 つの要素が、操作する前または操作した後に、「クラス」属性を持たない唯一の要素であることがわかりました。したがって、私はうまくいくと思われる次のことを考え出しました:
$("h6.uiStreamHeadline:contains('shared') a:not([class])").html("someone else");
私 <3 JQuery XD