私は Facebook 用の Greasemonkey スクリプトを作成しようとしていますが、ファンキーなページ/コンテンツの読み込みに問題があります (これはよくわかりません - 多くのリンクは実際には GET を変更しているだけですが、何らかのサーバー リダイレクトを行って、URL がブラウザにも同じように見えるようにしますか?)。基本的に必要な唯一のテストはGM_log()
、スクリプトに a を単独で配置することです。Facebook あたりをクリックすると、パターンとして facebook.com/* であっても実行されないことがよくあります。私にできることはありますか、それとも「ページの読み込み」のアイデアは Greasemonkey で修正されており、FB は単一の URL を使用してそれを実行しないように「だまして」いますか?
次のような基本的なコンテンツ操作を実行しようとすると、次のようになります。
GM.log("starting");
var GM_FB=new Object;
GM_FB.birthdays = document.evaluate("//div[@class='UIUpcoming_Item']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (i = GM_FB.birthdays.snapshotLength - 1; i >= 0; i--) {
if (GM_FB.birthdayRegex.test(GM_FB.birthdays.snapshotItem(i).innerHTML)) {
GM_FB.birthdays.snapshotItem(i).setAttribute('style','font-weight: bold; background: #fffe88');
}
}
その結果、手動でページを更新するだけで機能する場合があります。Firebug コンソールを引き上げてコードを強制的に実行すると、問題なく動作します。これは、DOM の特定の部分の読み込みが遅いためではないことに注意してください。関連する要素を待機するコードを後で追加しましたが、重要なことに、特定の遷移についてメッセージがログに記録されることはありません。たとえば、メッセージからニュース フィードに切り替えて戻るときです。