我正在为此站点(Site1)中的页面编写 Greasemonkey 脚本。Site1 有各种交易和优惠,我的 GM 脚本旨在执行以下操作:
当访问 Site1 上的报价时,脚本会查询 Site2以了解该酒店是否也在 Site2 上列出。如果是这样,则在 Site1 上显示来自 Site2 的搜索结果。
问题是 Site2 显示一个进度条(“加载结果”),然后显示结果。因此我的 Ajax 请求总是返回空结果,看起来像这样(见红框部分):(
点击查看大图)
但是,它实际上应该具有来自 Site2 的搜索结果的完整内容,如下所示:(
点击查看大图)
我尝试过同步 Ajax 请求,GM_xmlhttpRequest
但无济于事。
这是站点 2 有问题的进度条:(
点击查看大图)
在将响应返回给 Site1 之前,如何获取 AJAX 请求以等待 Site2 上的搜索完全呈现?
作为参考,我的完整工作脚本代码位于 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');
});