2009-09-15 2 views
1

안녕하세요.이 문제에 접근하는 방법을 잘 모르겠습니다. HTML img 요소의 배열을 전달하는 함수가 있습니다. 이 이미지를 통해 빈 "no image"엄지 못을 사용하여 이미지의 SRC 속성을 확인합니다. 그런 다음 img 태그 ALT 속성을 쿼리로 사용하여 이미지 검색을 실행합니다. 그런 다음 검색시 콜백 함수가 Img SRC를 첫 번째 이미지 결과로 바꿉니다.동시 Google 이미지 검색을 실행 순서에 따라 정렬하는 방법은 무엇입니까?

해당 검색 콜백과 올바른 이미지를 일치시키는 데 문제가 있습니다. 지금은 배열을 만들고 반환 된 검색을 이미지의 인덱스와 일치시키는 것입니다. 이미지 나 네트워크 대기 시간의 크기에 따라 여러 검색이 동시에 실행되기 때문에 콜백 기능이 중단되어 이미지가 섞일 수 있습니다.

개별 검색을 html 요소와 쌍으로 연결하는 방법이 필요합니다. searchController와 multiple 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')); 
    } 
    }); 
} 

답변

1

이 내가 하나가 관심과 자기 알림에 대한 싸는 일을 결국 무엇을 내가 사용하고있는 함수의 예입니다

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); 
관련 문제