ตัวอย่างโค้ดเรียกกลับขององค์ประกอบการค้นหาเพิ่มเติม

หน้านี้มีตัวอย่างต่างๆ ของการใช้ Callback เอลิเมนต์การค้นหา และช่วยเสริม ตัวอย่างที่พบในส่วน Callback ของ เอกสาร Search Element API

ตัวอย่างการติดต่อกลับของการเริ่มการค้นหา

การเรียกกลับการเริ่มต้นการค้นหาจะแก้ไขข้อความค้นหาก่อนที่จะใช้สำหรับการค้นหาได้ คุณสามารถกำหนดค่า 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>