كيفية ترتيب المتزامنة البحث صورة جوجل من أجل التنفيذ؟

StackOverflow https://stackoverflow.com/questions/1425313

سؤال

ومرحبا جميعا أنا لست متأكدا من كيفية التعامل مع هذه المشكلة. لدي وظيفة التي يتم تمريرها مجموعة من عناصر HTML IMG. فإنه حلقات عبر هذه الصور فحص السمة SRC عن الصور باستخدام فارغ "لا صورة" الإبهام الأظافر. ومن ثم تنفيذ عملية بحث الصور باستخدام العلامات IMG السمة ALT مثل الاستعلام. وظيفة رد الاتصال على البحث ثم يستبدل yourcolor.net و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'));
    }
  });
}
هل كانت مفيدة؟

المحلول

وهذا هو ما انتهى به يغلف أي أحد يهتم وتذكير النفس

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top