javascript - Google Web Search API 自定义搜索抛出 TypeError

标签 javascript google-search google-custom-search google-search-api

我们的网站上有一个自定义搜索栏,我注意到有时(9/10 次)JS 会抛出此错误,这会强制您搜索的内容无法呈现

www.googleapis.com/customsearch/v1element?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1gu…oogle.com&callback=google.search.Search.apiary####&nocache=1446053383742:2

Uncaught TypeError: google.search.Search.apiary#### is not a function

抛出错误时的搜索页面: Search page when error is thrown

错误 chop/解决的搜索页面 Search page when error is truncated or resolved

但如果我要刷新或研究,这个错误将被克服,并将呈现我的所有搜索。浏览文件后,我发现他们所指的 google.search.Search.apiary#### 只被提及一次。所以我相信这个错误会 chop 整个文件当它出现时。可能是什么原因造成的,有哪些修复方法?

最佳答案

好吧,我偶然发现了一个答案:-

经过更多研究后,我发现 this user on Google Forums也有同样的问题。

简单来说,它的工作方式是使用 <script>生成您的搜索栏。

您的搜索栏有此功能 + html 元素

<script>
 (function() {
   var cx = '###';
   var gcse = document.createElement('script');
   gcse.type = 'text/javascript';
   gcse.async = true;
   gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
       '//cse.google.com/cse.js?cx=' + cx;
   var s = document.getElementsByTagName('script')[0];
   s.parentNode.insertBefore(gcse, s);
 })();
</script>

<gcse:searchbox-only resultsUrl="/search-results"></gcse:searchbox-only>

因此我们在 <div class="header"> 中生成了条形图这是 HAML元素,作为模板的一部分。所以它总是加载在每个标题中。由于我们有 10 个页面,因此每个页面生成 1 次相同的脚本。

我们的 Google CSE 用于搜索然后重定向到 url /search-results生成结果的地方。

要生成结果,您需要此函数和 HTML

<script>
     (function() {
       var cx = '###';
       var gcse = document.createElement('script');
       gcse.type = 'text/javascript';
       gcse.async = true;
       gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
           '//cse.google.com/cse.js?cx=' + cx;
       var s = document.getElementsByTagName('script')[0];
       s.parentNode.insertBefore(gcse, s);
     })();
    </script>

这与我们的页眉中加载的相同。 通过此设置,结果页面将调用 <script>加载时两次,并导致 JS打破。所以在删除 <script> 之后加载结果,它停止抛出错误。

简而言之,只要确保您调用的不是相同的 function在结果页面上两次,它应该清除 Uncaught TypeError .

不要。重复。你自己

--以太币

关于javascript - Google Web Search API 自定义搜索抛出 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33397859/

相关文章:

javascript - 无法设置 null 的属性值

python - beautiful soup 从谷歌搜索中提取一个 href

google-maps - 无法从 Google Places API 获取特殊营业时间

web - 使用 Google 自定义搜索 API 时是否可以显示 'Related searches'

IE 和 Firefox 之间的 JavaScript 差异

javascript - 使用 $http 发送 JSON 导致 Angular 发送文本/纯内容类型

JavaScript |通过浏览器/手机类型检测 WebKit

beautifulsoup - 如何在抓取谷歌时检测验证码?

使用 Google 自定义搜索元素 api 的 Javascript XML Http 请求

c# - Google Custom Site Search Api C# 分页