javascript 谷歌自定义搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 谷歌自定义搜索相关的知识,希望对你有一定的参考价值。

/**
 * Search by Google Custom Search Engine JSON API
 * @param options : (object)
 */
var GoogleCustomSearch = function(options) {
  SearchService.apply(this, arguments);
  var self = this;
  var endpoint = "https://www.googleapis.com/customsearch/v1";
  
  /**
   * Generate result list html
   * @param data : (array) result items
   */
  self.buildResultList = function(data) {
    var html = "";
    $.each(data, function(index, row) {
      var url = row.link;
      var title = row.title;
      var digest = (row.htmlSnippet || "").replace('<br>','');
      html += self.buildResult(url, title, digest);
    });
    return html;
  };
  
  /**
   * Generate metadata after a successful query
   * @param data : (object) the raw google custom search response data
   */
  self.buildMetadata = function(data) {
    if (data.queries && data.queries.request && data.queries.request[0].totalResults !== '0') {
      self.nav.current = data.queries.request[0].startIndex;
      self.nav.currentCount = data.queries.request[0].count;
      self.nav.total = parseInt(data.queries.request[0].totalResults);
      self.dom.metadata.children('.total').html(self.nav.total);
      self.dom.metadata.children('.range').html(self.nav.current + "-" + (self.nav.current+self.nav.currentCount-1));
      self.dom.metadata.show();
    }
    else {
      self.dom.metadata.hide();
    }
    if (data.queries && data.queries.nextPage) {
      self.nav.next = data.queries.nextPage[0].startIndex;
      self.dom.nextButton.show();
    }
    else {
      self.nav.next = -1;
      self.dom.nextButton.hide();
    }
    if (data.queries && data.queries.previousPage) {
      self.nav.prev = data.queries.previousPage[0].startIndex;
      self.dom.prevButton.show();
    }
    else {
      self.nav.prev = -1;
      self.dom.prevButton.hide();
    }
  };
  
  /**
   * Send a GET request
   * @param queryText : (string) the query text
   * @param startIndex : (int) the index of first item (start from 1)
   * @param callback : (function)
   */
  self.query = function(queryText, startIndex, callback) {
    self.uiBeforeQuery();
    $.get(endpoint, {
      key: self.config.apiKey,
      cx: self.config.engineId,
      q: queryText,
      start: startIndex,
      num: self.config.per_page
    }, function(data, status) {
      if (status === 'success' && data.items && data.items.length > 0) {
        var results = self.buildResultList(data.items); 
        self.dom.resultContainer.html(results);       
      }
      else {
        self.onQueryError(queryText, status);
      }
      self.buildMetadata(data);
      self.uiAfterQuery();
      if (callback) {
        callback(data);
      }
    });
  };
  
  self.init();
};

以上是关于javascript 谷歌自定义搜索的主要内容,如果未能解决你的问题,请参考以下文章

谷歌自定义搜索排序日期范围标准不起作用

在 iOS 应用上使用谷歌自定义搜索 json api

谷歌自定义搜索引擎的链接列表

在我的 html 网站的谷歌自定义搜索引擎的文本框中添加占位符

如何在 Google 搜索结果页面中嵌入 iframe

谷歌自研芯片Tensor重磅来袭:“机器学习的里程碑”