Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加';下一个';和';以前的';谷歌自定义搜索(CSE)上的链接_Javascript_Search_Google Custom Search - Fatal编程技术网

Javascript 添加';下一个';和';以前的';谷歌自定义搜索(CSE)上的链接

Javascript 添加';下一个';和';以前的';谷歌自定义搜索(CSE)上的链接,javascript,search,google-custom-search,Javascript,Search,Google Custom Search,是否可以在谷歌自定义搜索中向页面结果添加下一个和上一个链接?我找到了这个线程,但代码是为旧版本的谷歌自定义搜索 较新的版本只是给你一个标签,比如,所有的东西都是从这个标签生成的。有什么想法吗?谢谢 搜索结果就是这样被拉进来的 <script> (function() { var cx = 'xxxxxx:xxxxx', gcse = document.createElement('script'); gcse.type = 'text/javascr

是否可以在谷歌自定义搜索中向页面结果添加下一个和上一个链接?我找到了这个线程,但代码是为旧版本的谷歌自定义搜索

较新的版本只是给你一个标签,比如
,所有的东西都是从这个标签生成的。有什么想法吗?谢谢

搜索结果就是这样被拉进来的

<script>
(function() {
    var cx = 'xxxxxx:xxxxx',
        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:searchresults-only></gcse:searchresults-only>

(功能(){
变量cx='xxxxxx:xxxxx',
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);
})();

您可以使用
searcher.cursor.currentPageIndex
searcher.gotoPage()
所有这些都包装在
google.setOnLoadCallback中

window.customSearchControl = customSearchControl;

$(function() {

    var link = $('<a />', {
        'html' : 'link',
        'href' : '#',
        'class' : 'general-button',
        'style' : 'margin-right:1em'
    });

    var searcher = window.customSearchControl.getWebSearcher();

    var prev = link.clone().click(function(e) {
        e.preventDefault();
        var topage = searcher.cursor.currentPageIndex - 1;
        if(topage < 1) {
            topage = 0;
        }
        searcher.gotoPage(topage);
        return false;
    }).html('&lt; prev');

    var next = link.clone().click(function(e) {
        e.preventDefault();
        var topage = searcher.cursor.currentPageIndex + 1;
        if(topage > searcher.cursor.pages.length) {
            topage = 10;
        }
        searcher.gotoPage(topage);
        return false;
    }).html('next &gt;');

    $('#cse').append(prev).append(next);
});
window.customSearchControl=customSearchControl;
$(函数(){
变量链接=$(''{
“html”:“link”,
“href”:“#”,
“类”:“常规按钮”,
“样式”:“右边距:1em”
});
var searcher=window.customSearchControl.getWebSearcher();
var prev=link.clone()。单击(函数(e){
e、 预防默认值();
var topage=searcher.cursor.currentPageIndex-1;
如果(topage<1){
topage=0;
}
searcher.gotoPage(topage);
返回false;
}).html('prev');
var next=link.clone()。单击(函数(e){
e、 预防默认值();
var topage=searcher.cursor.currentPageIndex+1;
如果(topage>searcher.cursor.pages.length){
topage=10;
}
searcher.gotoPage(topage);
返回false;
}).html('next');
$('#cse').append(上一个).append(下一个);
});

我使用了一些Jquery,但可以不用Jquery。我把解释写在代码里

 //Listens for DOM changes
var observer = new MutationObserver(function (mutations, observer) {
    // fired when a mutation occurs
    makeNext();
});

// define what element should be observed by the observer
// and what types of mutations trigger the callback
observer.observe(document, {
    subtree: true,
    attributes: true
});

function makeNext() {
    //Make a Next element
    var el = $("<div></div>", {
        "id": "next",
        "class": "gsc-cursor-page", // need google class so is same look and works with them
        "text": "Next",
        "on": { // on click, find what is the current page, and trigger click on the one after
            "click": function () {
                $(".gsc-cursor-current-page").next(".gsc-cursor-page").click();
            }
        }
    });
    //When results load, lots of changes are made, but we only wont 1 Next button
    if ($("#next").length == 0) {
        $(".gsc-cursor").append(el);
    }
}
//侦听DOM更改
var observer=新的突变观察者(功能(突变,观察者){
//当突变发生时激发
makeNext();
});
//定义观察者应观察的元素
//什么样的突变会触发回调
观察(文件){
子树:对,
属性:true
});
函数makeNext(){
//制作下一个元素
变量el=$(“”{
“id”:“下一步”,
“类”:“gsc游标页”//需要google类,所以外观相同,可以使用它们
“文本”:“下一步”,
“on”:{//on click,查找当前页面,并触发单击后面的页面
“单击”:函数(){
$(“.gsc游标当前页”)。下一步(“.gsc游标页”)。单击();
}
}
});
//当结果加载时,会进行很多更改,但我们只会单击“下一步”按钮
如果($(“#下一步”).length==0{
$(“.gsc游标”)。追加(el);
}
}

第一步可能是向searchresults only元素添加一个gname属性,以便您可以在javascript中访问它。IE:然后你可以通过google.search.CSE.element.getElement('pickaname')访问CSE,我也不会使用你发布的链接中的代码;它依赖于易于更改的未记录参数。我认为更好的方法是只生成自己的分页,并跟踪它们在您自己的页面上。您可以使用searcher.gotoPage(页面)功能更改页面。我唯一不确定的是如何从我的另一条评论中提到的CSE元素获取searcher对象,但是您可以尝试gsce_元素.getWebSearcher()(其中gsce_元素是getElement调用的结果)。最后,您还可以使用HTML样式的标记。参考资料:就我个人而言,我一直坚持使用V1,直到V2的内容得到更好的记录