실행 순서대로 동시 Google 이미지 검색을 주문하는 방법은 무엇입니까?
-
07-07-2019 - |
문제
안녕하세요,이 문제에 어떻게 접근 해야할지 잘 모르겠습니다. HTML IMG 요소의 배열이 전달되는 함수가 있습니다. 빈 "이미지 없음"Thumb Nail을 사용하여 이미지의 SRC 속성을 확인하는이 이미지를 통해 루프합니다. 그런 다음 IMG 태그 ALT 속성을 쿼리로 사용하여 이미지 검색을 실행합니다. 검색의 콜백 함수는 IMG SRC를 첫 번째 이미지 결과로 대체합니다.
올바른 이미지와 해당 검색 콜백과 일치하는 데 문제가 있습니다. 지금은 배열을 만들고 반환 된 검색을 이미지 색인과 일치시킵니다. 여러 검색이 동시에 실행되므로 이미지 또는 네트워크 대기 시간의 크기에 따라 순서대로 통화를 시작하고 이미지를 혼합 할 수 있습니다.
개별 검색을 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'));
}
});
}
해결책
이것이 내가 관심있는 사람과 자기 알림을 위해 내가 Encase를 수행하게 된 것입니다.
google.load('search','1');
function checkImages(){
// Here is the closure!
var myClosure = function(img){return function(){
if(this.results&&this.results.length>0){
var result = this.results[0];
img.src = result.tbUrl;
img.alt = result.titleNoFormatting;
}
}};
var imgs = document.getElementsByTagName('img');
for(var i=0;i<imgs.length;i++){
var img=imgs[i];
if(img.src.match(/no_image.{4}/)){
var is = new google.search.ImageSearch();
is.setSearchCompleteCallback(is, myClosure(img));
is.execute(img.alt);
}
}
}
google.setOnLoadCallback(checkImages);
제휴하지 않습니다 StackOverflow