我目前正在使用 google cse,我想知道是否可以跳转到特定的搜索词。例如,如果我在我的页面上搜索“出版物”一词,并且页面上有一个出版物部分,是否可以使用实施的谷歌搜索直接跳转到该部分?
在我每次搜索时,都会将我带到放置关键字的页面的开头。
问候马丁
我目前正在使用 google cse,我想知道是否可以跳转到特定的搜索词。例如,如果我在我的页面上搜索“出版物”一词,并且页面上有一个出版物部分,是否可以使用实施的谷歌搜索直接跳转到该部分?
在我每次搜索时,都会将我带到放置关键字的页面的开头。
问候马丁
这是可能的,是的,但是您必须进行一些编码。如果您考虑一下 Google 搜索的工作原理,它只会生成一个链接列表。一旦你到达另一个页面,它就无法控制发生的事情。因此,您希望在目标页面上发生的任何事情都必须自己编写代码。如果你真的想这样做,你可以这样设置:
首先,您将需要使用 V1 CSE,因为它提供了在搜索完成时设置回调函数的能力,而新的简化 V2 则没有。在此处查看 V1 文档:https ://developers.google.com/custom-search/docs/js/cselement-devguide
这是该页面中的示例代码,经过修改以添加回调函数:
<!--
copyright (c) 2012 Google inc.
You are free to copy and use this sample.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Custom Search Element API Example</title>
<script src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('search', '1');
google.setOnLoadCallback(function(){
customSearchControl = new google.search.CustomSearchControl().draw('cse');
}, true);
customSearchControl.setSearchCompleteCallback(this, searchCompleteFn);
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="cse" style="width:100%;">Loading...</div>
</body>
</html>
然后你可以像这样创建回调函数:
function searchCompleteFn(control, searcher) {
//your code
}
在您的代码中,您可能希望获取 cse div 中的所有 a.gs-title 元素并修改它们的 href 属性以添加用户的查询。这样,您的目标页面就可以看到用户搜索的内容并采取适当的行动(滚动到适当的部分,突出显示关键字,无论您想要什么)。例如,如果现有的 href 是http://www.yoursite.com/somepath/somepage.html,您可以将其更改为 http://www.yoursite.com/somepath/somepage.html#query=[user_query] .
[user_query] 由 control.getInputQuery() 给出
最后,在您的目标页面上,您将使用 javascript 检查 location.hash 中的查询参数,并采取适当的行动。
我猜这比你有兴趣做的工作要多得多,但也许它会对某人有所帮助。