0

Facebookの各投稿(ステータス、画像など)に関連付けられたリンクを保持するすべての「uiStreamSource」を追跡して、日付の横に1つのボタンを追加して、Google Chrome拡張機能を使用して他のタスクを実行することに成功しました。このボタンは、このコンテキストで言及する重要ではない定義済みのジョブを実行します。

私はこのコンテンツスクリプトを書きました:

contentscript.js

var nodeslist=document.getElementsByClassName("uiStreamSource");
alert(nodeslist.length);

Facebook ページが読み込まれるたびに、アラートには 10 個の検出されたクラス (つまり、10 件の投稿) が表示されます。しかし、下にスクロールすると、新しい投稿が表示され、このコードはそれらを検出できません。すべての投稿ですべての uiStreamSource ノードを更新する必要があるため、どうすればこれを解決できますか?

アップデート

contentscript.js で次のコードを試しました。

load();
document.addEventListener("DOMNodeInsertedIntoDocument", load, false);

function load(){
    var nodeslist=document.getElementsByClassName("uiStreamSource");
    alert(nodeslist.length);
}

初めて実行すると、現在のノード (現在の facebook の投稿) の正しい数が取得されますが、下にスクロールしてさらに多くの投稿が取得されると、ロード関数が呼び出されたことを示すアラートが表示されますが、印刷されたノードの数は 0 です。何故ですか?

よろしくお願いします。

4

2 に答える 2

2

イベントを追加して、DOMNodeInserted挿入される要素がクラスをチェックすることで投稿かどうかを確認できます。

または、簡単な解決策はjcadeプラグインを使用することです。指定したセレクタを持つ要素が挿入されたときに、コールバック関数を呼び出すことができます。

于 2013-01-27T04:56:22.933 に答える
0

スクロール イベントをリッスンし、新しい投稿を に追加しnodeslistます。setInterval を使用して、ユーザーがスクロールしていないときに追加された投稿をキャッチすることもできます。

于 2013-01-26T22:38:41.523 に答える