2017-09-15 2 views
1

J'utilise google recherche personnalisée:déclencheur de recherche Google Custom texte concaténés

1- J'écris un texte « A » dans la boîte de recherche google,

2- quand je clique sur le bouton de recherche ou appuyez sur entrez, javascript function_1/function_2 concaténera le texte "B" (texte provenant d'une zone de texte html, voir l'exemple de code joint) au texte "A", puis la recherche sera déclenchée pour le texte concaténé ("A" avec " B "). Mais, il semble que le processeur de recherche google déclenche la recherche d'abord pour le texte "A", puis la concaténation est terminée .. Ce n'est pas ce que je veux. Je veux que la recherche soit faite pour le texte concaténé.

Voir l'exemple de code ci-joint, et s'il vous plaît laissez-moi savoir pour toute solution.

<div class="gcse-container" id="gcse_container"> 
    <gcse:search enableAutoComplete="true"></gcse:search> 
</div> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 


<script>  
(function($, window) { 
    var elementName = ''; 
    var initGCSEInputField = function_1() { 
    $('.gcse-container form.gsc-search-box input.gsc-input') 
     .on("keyup", function(e) { 
     if(e.which == 13) { // 13 = enter 
     var searchTerm = $.trim(this.value); 
     if(searchTerm != '') { 
     var elements = document.getElementById("firstname").value; 
      this.value += elements; 
     } 
     } 
    }); 
    $('.gcse-container form.gsc-search-box input.gsc-search-button') 
     .on("click", function_2(e) { 
     var searchTerm = $.trim($('.gcse-container form.gsc-search-box input.gsc-input').val()); 
     if(searchTerm != '') { 
      var elements = document.getElementById("firstname").value; 
      searchTerm +=elements; 
      $('.gcse-container form.gsc-search-box input.gsc-input').val(searchTerm); 
     } 
    }); 
    }; 

    var GCSERender = function() { 
    google.search.cse.element.render({ 
     div: 'gcse_container', 
     tag: 'search' 
     }); 
     initGCSEInputField(); 
    }; 
    var GCSECallBack = function() { 
    if (document.readyState == 'complete') { 
     GCSERender(); 
    } 
    else { 
     google.setOnLoadCallback(function() { 
     GCSERender(); 
     }, true); 
    } 
    }; 

    window.__gcse = { 
    parsetags: 'explicit', 
    callback: GCSECallBack 
    }; 
})(jQuery, window); 

(function() { 
    var cx = '017643444788069204610:4gvhea_mvga'; 
    var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 
    gcse.src = 'https://www.google.com/cse/cse.js?cx=' + cx; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 
})(); 

</script> 

 

Répondre

0

modifier manuellement la chaîne de recherche n'est pas une bonne idée, donc ne pas faire

$('.gcse-container form.gsc-search-box input.gsc-input').val(searchTerm); 

à la place, vous pouvez utiliser prefillQuery et exécuter api fourni par Google à cet effet particulier . Essayez d'exécuter l'extrait de code suivant et recherchez "test", il ajoutera "junit" à la chaîne de requête.

<div class="gcse-container" id="gcse_container"> 
 
    <gcse:search enableAutoComplete="true"></gcse:search> 
 
</div> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<script>  
 

 
(function($, window) { 
 
\t var cseElement 
 
\t var first_name = ' junit' 
 
    const initGCSEInputField = function() { 
 
    $('.gcse-container form.gsc-search-box input.gsc-input') 
 
     .on("keyup", function(e) { 
 

 
    }); 
 
    $('.gcse-container form.gsc-search-box input.gsc-search-button') 
 
     .on("click", function(e) { 
 
     var searchTerm = $.trim($('.gcse-container form.gsc-search-box input.gsc-input').val());  
 
     //use google api to prefill your query string and programmatically execute query 
 
\t \t \t \t cseElement.prefillQuery(searchTerm + first_name) 
 
     cseElement.execute(searchTerm + first_name) 
 
    }); 
 
    }; 
 

 
    var GCSERender = function() { 
 
\t \t cseElement = google.search.cse.element.render({ 
 
     div: 'gcse_container', 
 
     tag: 'search' 
 
     }); 
 
     initGCSEInputField(); 
 
    }; 
 
    var GCSECallBack = function() { 
 
    if (document.readyState == 'complete') { 
 
     GCSERender(); 
 
    } 
 
    else { 
 
     google.setOnLoadCallback(function() { 
 
     GCSERender(); 
 
     }, true); 
 
    } 
 
    }; 
 

 
    window.__gcse = { 
 
    parsetags: 'explicit', 
 
    callback: GCSECallBack 
 
    }; 
 
})(jQuery, window); 
 

 
(function() { 
 
    var cx = '017643444788069204610:4gvhea_mvga'; 
 
    var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 
 
    gcse.src = 'https://www.google.com/cse/cse.js?cx=' + cx; 
 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 
 
})(); 
 

 
</script>

+0

Sorry..But Je viens de copier et passé votre sniped dans mes crochets (pour les tests) et il ne fonctionne pas, j'ai un message d'erreur dans la console Google: Uncaught TypeError: Impossible de lire la propriété 'prefillQuery' de aucune idée? Y at-il quelque chose qui manque dans votre extrait qui s'exécute et que je ne peux pas voir! Appréciez votre aide. Merci –

+0

Eh bien .. Merci mon frère .. J'ai finalement trouvé comment travailler. Apprécier ton aide ;) –