このサイト(Site1)のページ用のGreasemonkeyスクリプトを作成中です。Site1にはさまざまな種類の取引やオファーがあり、私のGMスクリプトは次のことを目的としています。
Site1のオファーにアクセスすると、スクリプトは Site2にクエリを実行して、このホテルがSite2にもリストされているかどうかを確認します。その場合は、Site2の検索結果をSite1に表示します。
問題は、Site2が進行状況バー(「結果の読み込み」)を表示してから、結果を表示することです。したがって、私のAjaxリクエストは常に空の結果を返し、次のようになります(赤いボックスの部分を参照):(
クリックすると拡大画像が表示されます)
ただし、実際には、次のように、Site2からの検索結果の完全なコンテンツが含まれている必要があります:(
クリックすると拡大画像が表示されます)
同期Ajaxリクエストを試しましたがGM_xmlhttpRequest
、役に立ちませんでした。
これは、サイト2の問題のあるプログレスバーです
(クリックすると拡大画像が表示されます)
Site1に応答を返す前に、Site2での検索が完全にレンダリングされるのを待つようにAJAXリクエストを取得するにはどうすればよいですか?
参考までに、私の完全に機能するスクリプトコードはpastebin.comにあります。
これは関連するスニペットです:
$(document).ready(function(){
var rewardsSiteResults = $('<div class="panel deal-panel rc-lr"></div>').attr('id', "rewardsSiteResults")
.html("<p>" + progressMessageText + "</p> ").append(spinnerGif);
$(insertSelector).after(rewardsSiteResults);
var addressMap = getAddressOfHotel();
var pinCode = addressMap[pinCodePlaceHolder];
var hotelName = addressMap[hotelNamePlaceHolder];
var queryURL = constructQueryURL(pinCode, hotelName);
$.ajaxSetup({async:true, timeout: 5000});
$.get(queryURL,null, function(response) {
if(!displayed){
displayed=true;
//rewardsSiteResults.html("adfaasddsf");
var text = $(response).find("#col2");
$(text).find("script").remove();
//console.log(text.html())
// $('<iframe id="someId"/>').appendTo('#rewardsSiteResults')
// .contents().find('body').append(response);
rewardsSiteResults.html("<div class='panel deal-panel rc-lr'>" + text.html() +"</div>");
//console.log(response);
}
},'html');
});