我的任务是将GCS添加到网站.在按照说明创建我的免费GCS(http://www.google.com/cse/sitesearch/create)并将提供的代码段粘贴到适当的位置后,搜索框和按钮组件呈现正常,用户是能够输入搜索字符串,运行搜索并查看结果.到现在为止还挺好.
但是,当组件第一次呈现时,我希望能够将预先输入的字符串传递到框中,并以编程方式立即执行搜索.这个位不起作用.
我目前使用的代码如下所示,包括提供的代码段以及从我阅读自定义搜索元素控制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>
Run Code Online (Sandbox Code Playgroud)
primarySearch是我想自动搜索的字符串.当组件呈现时,字符串'gname ="2DSearch"'会短暂出现,然后在搜索组件出现之前再次消失,然后没有其他任何事情发生.
这个问题似乎有一些相似之处(未答复):https://stackoverflow.com/questions/15871911/passing-optional-search-parameters-into-google-custom-search-query
我已经在网上搜索了几个小时的任何其他相关内容.
任何人都可以告诉我为什么它不起作用和/或我需要做什么?
我很抱歉,我做了很多编程,但在HTML和javascript方面我几乎是文盲.谢谢吉姆
我发现Chrome控制台显示以下错误:未捕获的ReferenceError:未定义Google
我的代码现在看起来像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
在控制台中,我现在也看到以下内容:
XMLHttpRequest无法加载(在此处插入我不允许发布的jsapi链接).Access-Control-Allow-Origin不允许Origin(在此插入我的localhost的URL).
在整个网络中有很多类似的错误引用,每个都略有不同,提出的解决方案提到了JSON,JQUERY,AJAX等等,但我发现的任何内容似乎都与我想要做的事情直接相关. (即,为我的代码提供定义'google'的文件或库),我尝试过的任何内容都没有用.
谈论尝试用蜡烛找到通过煤矿的方式...... :)干杯
Arn*_*ijn 14
我已经使用了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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10660 次 |
| 最近记录: |