Esempi di callback all'avvio della ricerca
Il callback all'avvio della ricerca può modificare la query prima che venga utilizzata per la ricerca. Il Motore di ricerca programmabile può essere configurato per includere termini predeterminati nella query, ma Questo callback può modificare la query in base a qualsiasi informazione disponibile personalizzata.
Il seguente callback di avvio della ricerca decora ogni query con il giorno corrente ogni settimana.
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:g9ckaktfipe"></script>
const mySearchStartingCallback = (gname, query) => {
const dayOfWeek = new Date().getDay();
console.log(dayOfWeek);
var days = {
"0": "Sunday",
"1": "Monday",
"2": "Tuesday",
"3": "Wednesday",
"4": "Thursday",
"5": "Friday",
"6": "Saturday"
};
return query + ' ' + days[dayOfWeek];
};
// Install the callback.
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
image: {
starting: mySearchStartingCallback,
},
web: {
starting: mySearchStartingCallback,
},
};
Includi questi elementi nel codice HTML:
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
Esempi di callback dei risultati visualizzati
Il callback dei risultati visualizzati è utile per modificare la pagina dopo che è stata completata. È progettata per facilitare la modifica della visualizzazione dei risultati senza dover richiamare assumersi la piena responsabilità del rendering dei risultati.
I seguenti esempi illustrano due applicazioni del callback di cui è stato eseguito il rendering dei risultati che non operano sui risultati.
Il callback relativo ai risultati visualizzati nota che è visualizzata l'ultima pagina di risultati e mostra un avviso che ricorda all'utente che ha raggiunto la fine.
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
myWebResultsRenderedCallback = function(){
var searchresults= document.getElementsByClassName("gsc-cursor-page");
var index= document.getElementsByClassName("gsc-cursor-current-page");
if(index.item(0).innerHTML == searchresults.length){
alert("This is the last results page");
}
};
Installa il callback
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
web: {
// Since the callback is in the global namespace, we can refer to it by name,
// 'myWebResultsRenderedCallback', or by reference, myWebResultsRenderedCallback.
rendered: myWebResultsRenderedCallback,
},
};
Includi questi elementi nel codice HTML:
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
Questa demo di callback per i risultati visualizzati aumenta la dimensione del carattere del "cursore" numeri che selezionano pagine di risultati.
La dimensione predefinita dei caratteri è 12 px. In questo caso la aumentiamo a 20 px.
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
myWebResultsRenderedCallback = function(){
document.getElementsByClassName("gsc-cursor")[0].style.fontSize = '20px';
};
Installa il callback
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
web: {
// Since the callback is in the global namespace, we can refer to it by name,
// 'myWebResultsRenderedCallback', or by reference, myWebResultsRenderedCallback.
rendered: myWebResultsRenderedCallback,
},
};
Includi questi elementi nel codice HTML:
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
Questo callback risultati visualizzati cambia i link alla pagina nel "cursore". dai numeri alle lettere.
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
myWebResultsRenderedCallback = function(){
var arr = document.getElementsByClassName('gsc-cursor-page');
var alp = ['A','B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','p','Q','R','S','T','U','V','W','X','Y','Z'];
for (var i = 0; i < arr.length; i++) {
arr[i].innerHTML = alp[i];
}
};
Installa il callback
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
web: {
// Since the callback is in the global namespace, we can refer to it by name,
// 'myWebResultsRenderedCallback', or by reference, myWebResultsRenderedCallback.
rendered: myWebResultsRenderedCallback,
},
};
Includi questi elementi nel codice HTML:
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
Esempi di callback pronti per i risultati
Questo callback formatta i risultati con sfondi chiari e scuri alternati.
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
Nota: questo codice è scritto in JavaScript/ES6. Verrà eseguito sulla maggior parte dei browser, ma avrà bisogno in JavaScript/ES5 per Internet Explorer e alcune altre applicazioni browser.
barredResultsRenderedCallback = function(gname, query, promoElts, resultElts){
const colors = ['Gainsboro', 'FloralWhite'];
let colorSelector = 0;
for (const result of resultElts) {
result.style.backgroundColor = colors[colorSelector];
colorSelector = (colorSelector + 1) % colors.length;
}
};
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
web: {
rendered: barredResultsRenderedCallback,
},
};
Includi questi elementi nel codice HTML:
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
Nuvola di parole
L'applicazione ovvia del callback risultati pronti è mostrare i risultati di ricerca in
un formato difficile da raggiungere con il callback risultati visualizzati per modificare
HTML. Il callback risultati pronti inizia con un div
vuoto.
Un esempio nel documento sull'API Search Element.
ha mostrato come utilizzare il callback per eseguire il rendering di una versione molto semplice dei risultati.
Un altro esempio
ha mostrato come conservare i dati dei risultati del callback results ready e trasmetterli al
il callback risultati visualizzati dove può essere utilizzato per decorare i risultati standard
display.
Il seguente callback risultati pronti mostra che i risultati di ricerca non devono necessariamente: un elenco di risultati. Sostituisce la normale visualizzazione dei risultati di ricerca con una nuvola di parole trovate nei risultati" titoli e contenuti. Quando l'elenco "risultati" è solo un passaggio intermedio per l'utente, un callback come questo può bypassare questa fase e utilizzare i risultati per presentare il report desiderato dall'utente.
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
<style>
#container {
width: 100%;
height: 4.5in;
margin: 0;
padding: 0;
}
</style>
<script src="https://cdn.anychart.com/releases/v8/js/anychart-base.min.js"></script>
<script src="https://cdn.anychart.com/releases/v8/js/anychart-tag-cloud.min.js"></script>
Nota: questo codice è scritto in JavaScript/ES6. Verrà eseguito sulla maggior parte dei browser, ma avrà bisogno convertire in JavaScript/ES5 per Internet Explorer e alcune browser meno recenti.
const resultsReadyWordCloudCallback = function(
name, q, promos, results, resultsDiv) {
const stopWords = new Set()
.add('a')
.add('A')
.add('an')
.add('An')
.add('and')
.add('And')
.add('the')
.add('The');
const words = {};
const splitter = /["“”,\?\s\.\[\]\{\};:\-\(\)\/!@#\$%\^&*=\+\*]+/;
if (results) {
for (const {contentNoFormatting, titleNoFormatting} of results) {
const wordArray = (contentNoFormatting + ' ' + titleNoFormatting)
.split(splitter)
.map(w => w.toLowerCase());
for (const w of wordArray) {
if (w && !stopWords.has(w)) {
words[w] = (words[w] + 1) || 1;
}
}
}
}
const dataForChart = [];
for (const key in words) {
const val = words[key];
dataForChart.push({
'x': key,
'value': val,
});
}
const container = document.createElement('div');
resultsDiv.appendChild(container);
container.id = 'container';
// create a tag (word) cloud chart
const chart = anychart.tagCloud(dataForChart);
// set a chart title
chart.title(`Words for query: "${q}"`)
// set an array of angles at which the words will be laid out
chart.angles([0, 45, 90, 135])
// display the word cloud chart
chart.container(container);
chart.draw();
return true; // Don't display normal search results.
};
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
web: {
ready: resultsReadyWordCloudCallback,
},
};
Includi questi elementi nel codice HTML:
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
Esempio di callback in due parti
I callback risultati pronti e risultati visualizzati possono essere utilizzati in combinazione per trasferire le informazioni dal primo al secondo. Ad esempio, le informazioni nell'array di oggetti risultato sono disponibili per il callback results ready, ma non sul callback results render. Se salvi queste informazioni in un array come parte del callback risultati pronti, possiamo renderle accessibili al callback risultati visualizzati.
Un esempio è la possibilità di ignorare il riquadro di anteprima che viene mostrato quando l'utente fa clic sul risultato di un'immagine. Con un callback in due parti, possiamo fare in modo che i risultati delle immagini rimandino direttamente ai siti web corrispondenti anziché mostrare un'anteprima dell'immagine quando viene fatto clic.
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:g9ckaktfipe"></script>
const makeTwoPartCallback = () => {
let urls;
const readyCallback = (name, q, promos, results, resultsDiv) => {
urls = [];
for (const result of results) {
urls.push(result['contextUrl']);
}
};
const renderedCallback = (name, q, promos, results) => {
const removeEventListeners = element => {
const clone = element.cloneNode(true);
element.parentNode.replaceChild(clone, element);
return clone;
};
for (let i = 0; i < results.length; ++i) {
const element = removeEventListeners(results[i]);
element.addEventListener('click', () => window.location.href = urls[i]);
}
};
return {readyCallback, renderedCallback};
};
const {
readyCallback: imageResultsReadyCallback,
renderedCallback: imageResultsRenderedCallback,
} = makeTwoPartCallback();
window.__gcse || (window.__gcse = {});
window.__gcse.searchCallbacks = {
image: {
ready: imageResultsReadyCallback,
rendered: imageResultsRenderedCallback,
},
};
Includi questi elementi nel codice HTML:
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>