Función de llamada después de cargar los resultados de búsqueda personalizados de Google?

Básicamente necesito ejecutar un código jQuery después de que los resultados de la búsqueda se representen en mi página. Puedo usar cualquiera de los códigos v1:

<div id="cse" style="width: 100%;">Loading</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript"> 
 google.load('search', '1', {language : 'en', style : google.loader.themes.V2_DEFAULT});
 google.setOnLoadCallback(function() {
var customSearchOptions = {};
var orderByOptions = {};
orderByOptions['keys'] = [{label: 'Relevance', key: ''},{label: 'Date', key: 'date'}];
customSearchOptions['enableOrderBy'] = true;
customSearchOptions['orderByOptions'] = orderByOptions;  var customSearchControl = new google.search.CustomSearchControl(
  'zzzzzzzzzzzz', customSearchOptions);
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.setAutoComplete(true);
customSearchControl.setAutoCompletionId('zzzzzz:zzzzzzz+qptype:3');
options.enableSearchResultsOnly(); 
customSearchControl.draw('cse', options);
function parseParamsFromUrl() {
  var params = {};
  var parts = window.location.search.substr(1).split('\x26');
  for (var i = 0; i < parts.length; i++) {
    var keyValuePair = parts[i].split('=');
    var key = decodeURIComponent(keyValuePair[0]);
    params[key] = keyValuePair[1] ?
        decodeURIComponent(keyValuePair[1].replace(/\+/g, ' ')) :
        keyValuePair[1];
  }
  return params;
}

var urlParams = parseParamsFromUrl();
var queryParamName = "q";
if (urlParams[queryParamName]) {
  customSearchControl.execute(urlParams[queryParamName]);
}
  }, true);
</script>

O el código v2:

<!-- Put the following javascript before the closing </head> tag. -->

<script>
    (function() {
var cx = 'xxxxxxxxx';
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>

He intentado poner mi llamada de función en varios lugares en el código pero no tengo éxito.

Tengo una función que necesita establecer dinámicamente la altura del contenedor en el que aparecen los resultados de la búsqueda, así que una vez que se carguen los resultados, necesito llamarlo de otra manera, mi página se muestra incorrectamente.

Aquí hay un enlace a la documentación de su API v2:https://developers.google.com/custom-search/docs/element#cse-element y v1:https://developers.google.com/custom-search/docs/js/cselement-reference . No puedo ver nada donde haya una devolución de llamada en la representación de resultados de búsqueda, solo en la inicialización. Parece una locura, aunque no hay apoyo para algo como esto.

Esto es lo que he intentado con v2:

(function () {
        var cx = 'xxxxxxxxx';
        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;
        gcse.onreadystatechange = gcse.onload = function () {
            console.log("executed");
            SetMainHeight(20);
        };
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s);

    })();

La consola nunca sale "ejecutada". También noté en mi consola que tengo el siguiente error:

Intento de JavaScript no seguro para acceder al marco con la URL sobre: ​​espacio en blanco desde el marco con la URLhttp://www.google.com/cse?q=test&client=google-coop&hl=en&r=s&cx=xxxxx... s1% 2Csr1 y rurl = http% 3A% 2F% 2Flocalhost% 3A58257% 2FSearch% 3Fq% 3Dtest # slave-1-1. Deben coincidir los dominios, protocolos y puertos.

No estoy seguro si eso importa ya que la función de búsqueda todavía funciona bien. Estoy probando esto en localhost sobre http.

Respuestas a la pregunta(3)

Su respuesta a la pregunta