gpt4 book ai didi

javascript - 如何让 Google 自定义搜索 (V2) 使用预加载的搜索字符串立即执行?

转载 作者:数据小太阳 更新时间:2023-10-29 04:59:18 25 4
gpt4 key购买 nike

我的任务是将 GCS 添加到网站。在我按照说明创建我的免费 G​​CS ( http://www.google.com/cse/sitesearch/create ),并将提供的代码片段粘贴到适当的位置后,搜索框和按钮组件呈现 OK,用户可以输入搜索字符串,运行搜索并查看结果。到目前为止,一切都很好。

但是,当组件第一次呈现时,我希望能够将预先输入的字符串传递到框中并以编程方式立即执行搜索。这一点不起作用。

我目前拥有的代码如下,包括提供的代码片段和一些额外的代码,这些代码是我阅读自定义搜索元素控件 API 文档 (https://developers.google.com/custom-search/docs/element) 的结果,旨在实现“立即执行”:

<div class="content-container">  
<script type="text/javascript">
(function() {
var cx = '(my search 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);
})();
</script>
<gcse:search> gname="2DSearch"</gcse:search>
<script type="text/javascript">
var element = google.search.cse.element.getElement("2DSearch");
element.prefillQuery(primarySearch);
element.execute(primarySearch);
</script>
</div>

primarySearch 是我要自动搜索的字符串。当组件呈现时,字符串 'gname="2DSearch"' 短暂出现然后在搜索组件出现之前再次消失,然后没有其他任何事情发生。

这里似乎与这个问题有一些相似之处(未回答):https://stackoverflow.com/questions/15871911/passing-optional-search-parameters-into-google-custom-search-query

我已经在网上搜索了几个小时,但没有找到任何其他相关内容。

谁能告诉我为什么它不起作用和/或我需要做什么?

抱歉,我已经完成了大量的编程工作,但在 HTML 和 javascript 方面我几乎是文盲。谢谢吉姆

我发现 Chrome 控制台显示以下错误:未捕获的 ReferenceError:未定义谷歌

我的代码现在看起来像这样:

<div class="content-container">
<script type="text/javascript">
(function() {
var cx = '013736134253840884188:fxsx6zqql_y';
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);
})();
</script>
</div>

<div class="gcse-search" data-gname="2DSearch"></div>

<div class="content-container">
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
var element = google.search.cse.element.getElement("2DSearch");
element.prefillQuery(primarySearch);
element.execute(primarySearch);
</script>
</div>

我现在再次在控制台中看到以下内容:

XMLHttpRequest 无法加载(在此处插入上面我不允许发布的 jsapi 链接)。 Access-Control-Allow-Origin 不允许来源(在此处插入我的本地主机的 URL)。

网上有很多类似错误的引用资料,每一个都略有不同,建议的解决方案引用了 JSON、JQUERY、AJAX 等,但我发现的任何内容似乎都与我的工作直接相关尝试做(即让我的代码可以使用定义“google”的文件或库),但我尝试过的任何方法都没有奏效。

谈论尝试用蜡烛在煤矿中找到出路...:)干杯

最佳答案

我已将其与 gcse 回调选项一起使用(我还更改了 CSE 控制面板中的布局以防止默认覆盖)。

<script>
function gcseCallback() {
if (document.readyState != 'complete')
return google.setOnLoadCallback(gcseCallback, true);
google.search.cse.element.render({gname:'gsearch', div:'results', tag:'searchresults-only', attributes:{linkTarget:''}});
var element = google.search.cse.element.getElement('gsearch');
element.execute('this is my query');
};
window.__gcse = {
parsetags: 'explicit',
callback: gcseCallback
};
(function() {
var cx = 'YOUR_ENGINE_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);
})();
</script>

<div id="results"></div>

关于javascript - 如何让 Google 自定义搜索 (V2) 使用预加载的搜索字符串立即执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com