หน้านี้มีตัวอย่างต่างๆ ของการใช้ Callback เอลิเมนต์การค้นหา และช่วยเสริม
ตัวอย่างที่พบใน
ส่วน Callback ของ
เอกสาร Search Element API
หมายเหตุ:
ตัวอย่างปฏิบัติการในหน้านี้ทำงานบนเว็บ JSFiddle
ของคุณ มองหาปุ่ม jsfiddle
ที่
ด้านขวาบนของโค้ดบล็อก การกดแป้นพิมพ์จะเปิดหน้า JSFiddle ที่มีตัวอย่างแสดงอยู่
ในแผง HTML
, JavaScript
, css
และเรียกใช้ ทั้งนี้
เริ่มต้น "alive" ดังนั้นคุณเพียงแค่ป้อนคำค้นหาในช่องค้นหาที่แสดงในแผงการเรียกใช้และ Callback
วิ่งได้
ตัวอย่างในเอกสารนี้จะแบ่งออกเป็นส่วนต่างๆ ตามประเภทและหน้าที่ แต่
ทุกส่วนของตัวอย่างจะส่งไปยัง JSFiddle พร้อมกัน
แต่ละส่วนของตัวอย่างมีปุ่ม JSFiddle ทุกคนล้วนทำสิ่งเดียวกัน
เนื่องจากนี่คือ JSFiddle คุณเล่นโค้ดได้ ระบบจะไม่เผยแพร่การเปลี่ยนแปลงที่ทำใน JSFiddle
กลับมาที่เอกสารนี้
ตัวอย่างการติดต่อกลับของการเริ่มการค้นหา
การเรียกกลับการเริ่มต้นการค้นหา จะแก้ไขข้อความค้นหาก่อนที่จะใช้สำหรับการค้นหาได้
คุณสามารถกำหนดค่า Programmable Search Engine ให้รวมคำที่กำหนดไว้ล่วงหน้าในการค้นหาได้ แต่
Callback นี้สามารถแก้ไขคำค้นหาตามข้อมูลที่มีอยู่สำหรับ Callback
การเรียกกลับการเริ่มการค้นหา ต่อไปนี้จะเติมแต่งคำค้นหาแต่ละรายการด้วยวันปัจจุบัน
ของสัปดาห์
ตัวอย่างการติดต่อกลับของการเริ่มการค้นหา
<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,
},
};
รวมองค์ประกอบเหล่านี้ใน HTML
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
ตัวอย่าง Callback ที่แสดงผล
ผลลัพธ์ที่แสดงผล Callback เหมาะสำหรับการแก้ไขหน้าเว็บหลังจากที่มีผลลัพธ์
เครื่องมือนี้ออกแบบมาเพื่อช่วยให้แก้ไขการแสดงผลได้อย่างง่ายดายโดยไม่ต้องเรียกกลับ
เป็นผู้รับผิดชอบอย่างเต็มที่ในการแสดงผลลัพธ์
ตัวอย่างต่อไปนี้แสดงการใช้ผลลัพธ์ 2 แบบที่แสดง Callback
ไม่ทำงานกับผลการค้นหา
ระบุหน้าผลลัพธ์ล่าสุด
ผลลัพธ์ที่แสดง Callback นี้แจ้งว่าเราแสดงหน้าสุดท้าย
และป๊อปอัปแจ้งเตือนผู้ใช้ว่าถึงระดับสูงสุดแล้ว
<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");
}
};
ติดตั้ง 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,
},
};
รวมองค์ประกอบเหล่านี้ใน HTML
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
การเพิ่มขนาดแบบอักษรของ "เคอร์เซอร์" ลิงก์
การสาธิตการเรียกกลับผลลัพธ์ที่แสดง นี้จะเพิ่มขนาดแบบอักษรของ
"เคอร์เซอร์" ตัวเลขที่เลือกหน้าผลลัพธ์
ขนาดแบบอักษรเริ่มต้นคือ 12 พิกเซล จากตรงนี้ เราเพิ่มเป็น 20 พิกเซล
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
myWebResultsRenderedCallback = function(){
document.getElementsByClassName("gsc-cursor")[0].style.fontSize = '20px';
};
ติดตั้ง 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,
},
};
รวมองค์ประกอบเหล่านี้ใน HTML
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
ใช้ตัวอักษรแทนคำว่า "เคอร์เซอร์" ป้ายกำกับ
Callback ที่แสดงผล นี้จะเปลี่ยนแปลงลิงก์ของหน้าใน "เคอร์เซอร์"
จากตัวเลขเป็นตัวอักษร
<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];
}
};
ติดตั้ง 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,
},
};
รวมองค์ประกอบเหล่านี้ใน HTML
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
ตัวอย่าง Callback ที่พร้อมสำหรับผลลัพธ์
แสดงผลลัพธ์ด้วยพื้นหลังแบบสลับสี
รูปแบบ Callback นี้ให้ผลลัพธ์ที่มีพื้นหลังสว่างและมืดสลับกัน
<script async
src="https://cse.google.com/cse.js?cx=000888210889775888983:y9tkcjel090"></script>
หมายเหตุ: โค้ดนี้เขียนด้วย JavaScript/ES6 โดยจะทำงานได้ในเบราว์เซอร์ส่วนใหญ่ แต่จะต้องใช้
เพื่อแปลงเป็น JavaScript/ES5 สำหรับ Internet Explorer และเวอร์ชันเก่าอื่นๆ อีกสองสามรายการ
เบราว์เซอร์
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,
},
};
รวมองค์ประกอบเหล่านี้ใน HTML
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
ภาพกลุ่มคำ
การใช้งานที่ชัดเจนของ Callback results Ready คือการแสดงผลการค้นหาใน
รูปแบบที่เข้าถึงได้ยากหากใช้การเรียกกลับผลลัพธ์ที่แสดง เพื่อปรับแต่ง
HTML การเรียกกลับผลลัพธ์พร้อมแล้ว จะเริ่มต้นด้วย div
ที่ว่างเปล่า
ตัวอย่างหนึ่ง ในเอกสาร Search Element API
จะแสดงวิธีใช้ Callback เพื่อแสดงผลลัพธ์ในแบบที่เรียบง่าย
อีกตัวอย่างหนึ่ง
แสดงวิธีเก็บข้อมูลผลลัพธ์จากการติดต่อกลับ ผลลัพธ์พร้อมแล้ว และส่งไปยัง
ผลลัพธ์ที่แสดง Callback ซึ่งสามารถใช้ในการตกแต่งผลลัพธ์มาตรฐาน
จอแสดงผล
การเรียกกลับที่ผลลัพธ์พร้อมแล้ว ต่อไปนี้แสดงให้เห็นว่าผลการค้นหาไม่จำเป็นต้อง
เป็นรายการผลการค้นหา แทนที่การแสดงผลการค้นหาตามปกติ
ด้วยกลุ่มคำของคำที่พบในผลลัพธ์" ชื่อและเนื้อหา เมื่อรายการ
ผลลัพธ์เป็นเพียงขั้นตอนระดับกลางสำหรับผู้ใช้ของคุณ การเรียกกลับเช่นนี้สามารถข้ามขั้นตอนนั้นได้
และใช้ผลลัพธ์เพื่อนำเสนอรายงานที่ผู้ใช้ต้องการ
สร้าง Word Cloud จากเนื้อหาผลการค้นหา
<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>
หมายเหตุ: โค้ดนี้เขียนด้วย JavaScript/ES6 โดยจะทำงานได้ในเบราว์เซอร์ส่วนใหญ่ แต่จะต้องใช้
เพื่อแปลงเป็น JavaScript/ES5 สำหรับ Internet Explorer และ
เบราว์เซอร์รุ่นเก่า
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,
},
};
รวมองค์ประกอบเหล่านี้ใน HTML
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>
ตัวอย่าง Callback 2 ส่วน
คุณสามารถใช้ Callback ผลลัพธ์ที่พร้อมใช้งาน และผลลัพธ์ที่แสดง ร่วมกันเพื่อส่งต่อข้อมูลจากรายการก่อนหน้าไปยังรายการหลังได้
ตัวอย่างเช่น ข้อมูลในอาร์เรย์ของออบเจ็กต์ผลลัพธ์จะพร้อมใช้งานสำหรับ Callback ผลลัพธ์ที่พร้อม แต่จะไม่มีอยู่ใน Callback ผลลัพธ์ที่แสดง
การบันทึกข้อมูลนั้นไปยังอาร์เรย์เป็นส่วนหนึ่งของ Callback ผลลัพธ์พร้อม ที่จะทำให้เข้าถึง Callback ที่แสดงผลลัพธ์ ได้
ตัวอย่างหนึ่งคือการข้ามแผงแสดงตัวอย่างที่แสดงเมื่อมีการคลิกผลการค้นหารูปภาพ
ด้วย Callback แบบ 2 ส่วน เราสามารถให้ลิงก์ผลการค้นหารูปภาพไปยังเว็บไซต์ที่เกี่ยวข้องโดยตรง แทนที่จะแสดงตัวอย่างรูปภาพเมื่อคลิก
ข้ามตัวอย่างรูปภาพ
<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,
},
};
รวมองค์ประกอบเหล่านี้ใน HTML
<div class="gcse-searchbox"></div>
<div class="gcse-searchresults"></div>