我正在以最简单的形式使用谷歌自定义搜索。我刚刚在视图中添加了生成的脚本和标记<gcse:search></gcse:search>
。一切都按预期工作,但我希望能够自己在文本框中设置搜索词,然后触发提交。我无法弄清楚如何确定何时加载下面的脚本。有没有办法修改脚本,以便我可以使用jQuery then()
函数?
(function () {
var cx = 'xxxxxxxxxxxxxxxxxx:xxxxxxxx';
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 type="text/javascript" src="https://www.google.se/jsapi"></script>
<script type="text/javascript">
google.load("search", "1", { language: 'sv', style: google.loader.themes.MINIMALIST });
google.setOnLoadCallback(function () {
var ctrl = new google.search.CustomSearchControl('xxxxxxxxxxxxxxxxxx:xxxxxxxx');
ctrl.draw('cse');
// you can do stuff here, like trigger a search as shown below !!
ctrl.execute('<%=Request.QueryString["text"] %>');
}, true);
</script>
答案 0 :(得分:1)
我使用了一种解决方法。来自Google的脚本正在创建一个带有src属性的iframe,其中包含&amp; cx = 代码和要搜索的字词(&amp; q = ):
http://www.google.com/cse?cx=xxxxxxxxxxxxx%3Ac8u_ywvcjnw&ie=UTF-8&q=term+to+search&sa=Search& ....
使用jquery,您可以创建一个iframe,其中 src 属性设置为上述链接。
答案 1 :(得分:1)
如果其他人想要以更简单的方式执行此操作 - 我只是使用setInterval来轮询它何时加载。搜索字段:
<gcse:searchresults-only gname='ap_search'></gcse:searchresults-only>
然后只需在其下添加一个脚本标记:
javascript:
var int=setInterval(function() {
if (typeof google != 'undefined' && google.search.cse) {
google.search.cse.element.getElement('ap_search').execute("#{@term}")
clearInterval(int)
}
}, 200)