在Google自定义搜索引擎代码的第一版(v1)中,有一个名为.setSearchCompleteCallback
的方法,可让您在搜索结果返回时调用一些Javascript。可以找到该代码的文档here。
搜索引擎对象已从v1中的google.search.CustomSearchControl
移至v2中的google.search.cse.element
。
current version (v2)似乎没有.setSearchCompleteCallback
方法,我找不到在搜索结果完成时注册回调的方法。我已经尝试过使用Jquery的ajaxStart和ajaxEnd方法取得不同程度的成功,但我想知道是否有一种“官方”的方式来构建Google CSE代码。
答案 0 :(得分:1)
不优雅,但我唯一能找到的东西。
我知道人们会评论使用永远不会结束的间隔,但在找到更好的解决方案之前,这就是我们所拥有的。
setInterval(function () {
var resultInfo = $('.gsc-result:first');
if (resultInfo.length && !resultInfo.data('isOld')) {
resultInfo.data('isOld', true);
console.log('new results');
}
}, 500);
答案 1 :(得分:0)
您可以通过使用MutationObserver观看结果HTML代码来确定搜索结果已更改。
$representations = Representation::selectRaw('id, city, round(6371 * acos(cos(radians(45.0)) * cos(radians(latitude)) * cos(radians(longitude) - radians(2.7)) + sin(radians(45.0)) * sin(radians(latitude)))::numeric, 1) < 50 AS distance')
->where('distance', '<', 50)
->limit(10)
->get();
它与V1的搜索完整回调一样好用。旧浏览器不支持// Where to put search results
var resultsElement = document.getElementById('results');
// Creating results box
window.google.search.cse.element.render({
div: resultsElement,
tag: 'searchresults-only',
attributes: {
overlayResults: false
}
});
// Watching the "new results" event
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
new MutationObserver(function(mutations) {
for (var i = 0; i < mutations.length; ++i) {
if (mutations[i].target.classList.contains('gsc-results')) {
console.log('Search complete!');
break;
}
}
}).observe(resultsElement, {
subtree: true,
attributes: false,
childList: true,
characterData: false
});
,但您可以使用a polyfill启用它。