如何使用预先加载的搜索字符串立即执行谷歌自定义搜索(V2)
How to get the Google Custom Search (V2) to execute immediately with a pre-loaded search string?
我的任务是将GCS添加到网站中。在我按照说明创建我的免费GCS之后(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。谢谢Jim
我发现Chrome控制台显示以下错误:未捕获引用错误:谷歌未定义
我的代码现在看起来是这样的:
<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不允许使用Origin(在此处插入我的本地主机的URL(。
网络上有很多类似错误的引用,每一个都略有不同,提出的解决方案都引用了JSON、JQUERY、AJAX等,但我发现的似乎都与我试图做的事情没有直接关系(即,让我的代码可以使用定义了"谷歌"的文件或库(,我尝试过的都没有奏效。
谈论试图用蜡烛穿过煤矿…:(干杯
我已经使用了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>
你能通过URL传递搜索词吗?
<script>
(function() {
var cx = 'YOURID';
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:searchbox queryParameterName="term"></gcse:searchbox>
<gcse:searchresults></gcse:searchresults>
如果您通过yourdomain.com/search?term=searchword
调用"搜索"页面,搜索结果会立即显示。
<gcse:search gname='abcd'></gcse:search>
当页面加载时:
google.search.cse.element.getElement('abcd').execute(query);
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 谷歌水印未显示在自定义搜索框中
- 谷歌CSE-搜索参数
- 使用谷歌搜索网址
- 谷歌位置服务附近搜索结果基于正确的地图中心的位置
- 与网络界面相比,谷歌搜索API有时会重复第一个结果,有时会重复第二个结果
- 如何使用谷歌地图中的纬度和经度搜索附近的位置
- 如何获取显示在谷歌搜索右侧的图像链接
- 在谷歌地图上显示所有搜索到的位置结果
- 从谷歌自定义搜索返回随机帖子
- 谷歌搜索API-“;没有结果”;文本
- 在javascript中调用自定义谷歌搜索标签时出现问题
- 搜索按钮谷歌地图在我的vf页面上不起作用
- 接近搜索谷歌地图
- 按地址搜索谷歌地图
- 我可以用XMLHttpRequest()搜索谷歌吗?
- 我需要使用javascript搜索谷歌,例如,当我运行代码时,它打开新的标签,谷歌's特朗普为我
- 如何创建Javascript搜索谷歌
- 是否有可能使用经纬度搜索谷歌图片为web应用程序
- utf 8-Javascript非utf-8字符搜索谷歌Chrome扩展