You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Custom Search Element V1无法使用,如何迁移至V2版本?

迁移谷歌自定义搜索从V1到V2版本的解决方案

嘿,你遇到的这个问题确实是因为Google已经彻底停止支持Custom Search Element V1版本了——旧的V1 API和jsapi资源都已经被停用,所以才会弹出那个未授权访问的提示。你推测是版本更新导致的,完全正确!

先看你提供的那段V2代码,整体方向是对的,但有几个小细节需要调整才能完美适配你的需求:

几个关键修正点

  • 你代码里google.search.cse.element.getElement('gsearch')这一行的元素ID写错了,应该对应你渲染时指定的div:'cse',所以要改成element.getElement('cse'),不然会找不到搜索元素实例。
  • 原来V1里的setLinkTarget(google.search.Search.LINK_TARGET_SELF)(让搜索结果在当前页面打开),在V2里需要加到attributes配置里,添加linkTarget:'_self'就行。
  • 如果需要保留V1里的自动完成功能,记得在attributes里加上enableAutoComplete: true,这个是V2对应的配置项。

修正后的完整V2代码

function gcseCallback() {
  if (document.readyState != 'complete') return;
  google.search.cse.element.render({
    div: 'cse',
    tag: 'searchresults-only',
    attributes: {
      resultSetSize: 20,
      noResultsString: "<div style='padding:10px'>Nothing</div>",
      linkTarget: '_self', // 对应V1的LINK_TARGET_SELF,让结果在当前页打开
      enableAutoComplete: true // 保留自动完成功能,和V1的setAutoComplete(true)对应
    }
  });
  // 获取正确的搜索元素实例
  var element = google.search.cse.element.getElement('cse');
  element.execute('keyword');
};

window.__gcse = {
  parsetags: 'explicit',
  callback: gcseCallback
};

(function() {
  var cx = '你的CSE ID'; // 记得替换成你实际的自定义搜索ID
  var gcse = document.createElement('script');
  gcse.type = 'text/javascript';
  gcse.async = true;
  gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
             '//www.google.com/cse/cse.js?cx=' + cx;
  var s = document.getElementsByTagName('script')[0];
  s.parentNode.insertBefore(gcse, s);
})();

页面需要保留的内容

和你说的一样,只需要在页面主体保留结果展示的div就够了:

<div id="cse"></div>

额外小贴士

  • 确保你的CSE ID是正确的,并且在谷歌自定义搜索控制台里没有配置错误,比如权限限制之类的。
  • 建议优先使用HTTPS的脚本链接,避免混合内容问题(这段代码已经自动适配了当前页面的协议,不用担心)。

把原来的V1代码全部替换成上面修正后的V2代码,你的搜索功能就能正常工作啦!

内容的提问来源于stack exchange,提问作者Borja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:31:38