单击结果链接时,将Google自定义搜索结果更改为使用HTTPS

时间:2013-06-19 16:49:45

标签: javascript html google-search google-search-api

我正在尝试强制我的Google自定义搜索结果使用HTTPS格式而不是HTTP格式。我已经挖掘了API文档,并且未能找到如何进行此更改。我记得旧的GCSE允许你指定HTTP或HTTPS,但是自从谷歌更新它之后它看起来就像你不能再看了。

我尝试过http://www.google.com/cse/cse.js并将所有HTTP事件更改为HTTPS,以及www.google.com/jsapi并在V1和V2方法之间切换,但我没有成功。< / p>

我已经挖掘并将HTTP的每次出现都更改为HTTPS,无论它是否相关,我仍然坚持使用链接到HTTP地址而不是所需HTTPS地址的所有搜索结果。

编辑:代码

我愿意使用V1或V2,没关系。

这是V1代码:

<div id='cse' style='width: 100%;'>Loading</div>
<script src='//www.google.com/jsapi' type='text/javascript'></script>
<script type='text/javascript'>
google.load('search', '1', {language: 'en', style: google.loader.themes.DEFAULT});
google.setOnLoadCallback(function() {
  var customSearchOptions = {};
  customSearchOptions['overlayResults'] = true;
  customSearchOptions['adoptions'] = {'layout' : 'noTop'};
  var customSearchControl =   new google.search.CustomSearchControl('MySearchID', customSearchOptions);
  customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
  var options = new google.search.DrawOptions();
  options.setAutoComplete(true);
  customSearchControl.draw('cse', options);
}, true);

这是V2代码:

<script>
  (function() {
    var cx = 'MySearchID';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'https:') +
        '//www.google.com/cse/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();
</script>
<gcse:search></gcse:search>

我已经尝试更改顶部提到的Javascript,并将V1和V2部分中的Javascript源替换为使用我的JS而不是Google的,但这也没有解决我的问题。我可能会忽略一些事情......

有什么想法吗?

谢谢!

编辑#2

好消息,我能够弄清楚。

在使用V1代码时,您可以添加以下代码:

google.search.Csedr.addOverride("mysite_");

在包含此代码的行的正上方:

customSearchControl.draw('cse', options);

覆盖现有的Google CSS。在这之后,我编写了自己的CSS,其中包括:

<div class="gs-title">
   <a class="gs-title" data-attr="{href:unescapedUrl.replace('http://','https://'),target:target}" data-body="html(title.replace('mySiteTitle :: ', ''))"></a>
</div>

结果仍然显示HTTP,但工具提示会读取HTTPS,并导致正确的HTTPS页面。

我不能回答我自己的问题,因为立即获得的声誉不到10,但我会在几个小时内将其标记为可以使用该功能。

0 个答案:

没有答案