こんにちはすべて私はこの問題にアプローチする方法がわかりません。HTMLimg要素の配列が渡される関数があります。これらの画像をループして、空白の「画像なし」のサムネイルを使用して画像のSRC属性をチェックします。次に、imgタグのALT属性をクエリとして使用して画像検索を実行します。次に、検索のコールバック関数がImgSRCを最初の画像結果に置き換えます。
正しい画像を対応する検索コールバックと一致させるのに問題があります。現在、配列を作成し、返された検索を画像のインデックスと照合しています。複数の検索は同時に実行されるため、画像のサイズやネットワークの遅延によっては、コールバックが順不同で発生し、画像が混同される可能性があります。
個々の検索とhtml要素を組み合わせることができるアプローチが必要です。これは、searchControllerと複数のimageSearchオブジェクトを使用して可能でしょうか?
以下は私が使用している関数の例です
google.load('search', '1');
function googleFillBlanks(jqueryImages){
//namePairs holds the images matching alt text and attachedCount is used for matching up once the call back is fired
var attachedCount = 0;
var namePairs = [];
function searchComplete(searcher){
if (searcher.results && searcher.results.length > 0) {
var results = searcher.results;
var result = results[0];
$("img[alt='"+namePairs[attachedCount]+"'] ").attr('src', result.tbUrl);
//jqueryImages.get(0).attr('src', result.tbUrl);
attachedCount++;
}
}
var imageSearch = new google.search.ImageSearch();
//restrict image size
imageSearch.setRestriction(google.search.ImageSearch.RESTRICT_IMAGESIZE,
google.search.ImageSearch.IMAGESIZE_SMALL);
imageSearch.setSearchCompleteCallback(this, searchComplete, [imageSearch]);
jqueryImages.each(function(){
if($(this).attr('src').substr(-12,8) == 'no_image')
{
namePairs.push($(this).attr('alt'));
imageSearch.execute($(this).attr('alt'));
}
});
}