Вызов функции после загрузки результатов пользовательского поиска Google?

Мне нужно выполнить код jQuery после того, как результаты поиска будут отображены на моей странице. Я могу использовать любой код 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>

Или код 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>

Я пытался поместить свой вызов функции в разных местах кода, но безрезультатно.

У меня есть функция, которая должна динамически устанавливать высоту контейнера, в котором отображаются результаты поиска, поэтому после загрузки результатов мне нужно вызвать ее, иначе моя страница отображается неправильно.

Вот ссылка на их документацию API v2:https://developers.google.com/custom-search/docs/element#cse-element и v1:https://developers.google.com/custom-search/docs/js/cselement-reference , Я не вижу ничего, где есть обратный вызов при отображении результатов поиска, только при инициализации. Кажется сумасшедшим, хотя нет поддержки для чего-то подобного.

Вот что я пробовал с 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);

    })();

Консоль никогда не выводит «выполнено». Также я замечаю в своей консоли, у меня есть следующая ошибка:

Небезопасная попытка JavaScript получить доступ к фрейму с помощью URL about: blank из фрейма с URLhttp://www.google.com/cse?q=test&client=google-coop&hl=en&r=s&cx=xxxxx... s1% 2Csr1 & rurl = HTTP% 3A% 2F% 2Flocalhost% 3A58257% 2FSearch% 3Fq% 3Dtest # ведомое-1-1. Домены, протоколы и порты должны совпадать.

Не уверен, что это имеет значение, так как функция поиска все еще работает нормально. Я проверяю это на локальном хосте через http.

Ответы на вопрос(3)

Ваш ответ на вопрос