これについて同様の投稿を書きましたが、ローカライズしすぎたために閉じられました。いくつかの調査とテストの後、私は問題の原因を見つけたと思います.この質問はよりよく説明され、うまくいけばより役立つはずです.
XMLHttpRequest を使用して、ページに移動し、マウス クリックをシミュレートしてから、コンテンツを取得する必要があります。ここに私が書いたコードがあります:
var sendToLog;
var xhr = new XMLHttpRequest();
xhr.open('GET', '/newsfeed-simulator', true);
xhr.responseType = 'document';
xhr.onload = function(e) {
if (this.status == 200)
{
var event = xhr.response.createEvent("MouseEvents");
event.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0,
false, false, false, false,
0, null);
xhr.response.getElementById("simulate-button").dispatchEvent(event);
$(xhr.response).ready(function()
{
console.log(xhr.response.body);
sendToLog = xhr.response.getElementsByClassName("story-score");
});
chrome.extension.sendMessage({writeToLog: sendToLog});
}
}
xhr.send();
問題は、クリックイベントが機能しないことです。それも試してみましxhr.response.getElementById("simulate-button").click();
たが無駄でした。
何が問題なのかわからない? それは簡単なことです:ページに行き、それがロードされるのを待ち、ボタンをクリックし、再びロードされるのを待ってから、DOM からコンテンツを取得します。
どんな助けでも大歓迎です。
前もって感謝します
編集により、2 番目のオンロードが削除され、xhr.response が追加されました。これで、コンソールへのマウス クリックなしで DOM が出力されます。まだ必要なものではありませんが、正しい方向への一歩かもしれません
EDIT2:この投稿や他の人によると、クリックはIEでしか機能しないため、使用しない方がよいでしょう。だから私は自分のコードを編集しましたが、うまくいきません...残念
EDIT3 Fabien Quatravaux として、ここでの問題は、ajax 要求の応答が現在の DOM に読み込まれていないため、イベントを呼び出すことができないことです (できますが、何もしません)。問題は、xmlhttprequest を使用してページに移動し、イベントを発生させて、結果の DOM を取得するにはどうすればよいかということです。これを指摘してくれたFabienに再び感謝します。