绑定点击事件到谷歌自定义搜索结果



我使用Google自定义搜索来获取搜索查询的结果。结果很好。现在我需要捕获生成结果上的click事件。
到目前为止,我已经尝试了以下操作:

<script>
    (function () {
        window.__gcse = {
            callback: myCallback
        };
        function myCallback() {
            $('input.gsc-input').keyup(function (e) { if (e.keyCode == 13 || e.which == 13) { console.log('enter pressed'); } });
            $('input.gsc-search-button').on('click', function (e) { console.log('clicked'); });
            $('a').on('click', function (e) {
                alert();
                e.preventDefault();
                e.stopPropagation();
                debugger;
                var obj = $(this);
            });
        }
        var cx = 'my-gcse-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 linktarget="_parent" enableAutoComplete="true"></gcse:search>

上面给出了点击输入搜索框和按钮的控制台日志,但没有点击搜索结果中的链接。我也试过窗户。加载和文档。准备好了,但是不能运行。

<script>
    $(window).on("load", function () {
        $('#gsc-i-id1').css('background', '');
        $('#gsc-i-id1').on("blur", function (e) {
            $(this).css('background', '');
        });
        $("a").on("click", function (e) {
            alert();
            e.preventDefault();
            debugger;
            var obj = $(this);
        });
    });
    $(document).ready(function () {
        $('#gsc-i-id1').css('background', '');
        $("a").on("click", function (e) {
            e.preventDefault();
            debugger;
            var obj = $(this);
        });
    });
  </script>

各位专家请帮助我实现这个目标。

你的代码刚刚为我工作…!!您所需要做的就是在a.c clicked上添加对alert()的调用这意味着在你的代码中找到下面的代码片段

$(window).on("load", function () {
    $('#gsc-i-id1').css('background', '');
    $('#gsc-i-id1').on("blur", function (e) {
        $(this).css('background', '');
    });
    $("a").on("click", function (e) {
        alert();
        e.preventDefault();
        debugger;
        var obj = $(this);
    });
});

并替换为

      $(window).on("load", function () {
        $("a").on("click", function (e) {
            alert();
            e.preventDefault();
            debugger;
            var obj = $(this);
        });
    });

我必须提到我没有使用默认的谷歌自定义搜索模板,我有自己的搜索框,我使用两列模板,所以在我的情况下,窗口永远不会模糊…我很确定你现在一定已经明白了这一点。懒洋洋地倚靠

使用ti一段时间后,我意识到它适用于没有广告的结果页面。如果你的页面有广告,当你点击广告的时候…广告文本是在一个span中,所以这就是为什么a.o onclick事件不会停止默认行为

最新更新