При обратном вызове рендеринга для кнопки G + - PullRequest
4 голосов
/ 03 апреля 2012

Как мне выполнить действие, только когда кнопка G + закончила рендеринг?

Facebook позволяет сделать это, используя следующее:

FB.XFBML.parse(document, function() {
    alert('rendering done');
});

Я просмотрел документацию Google, но ничего полезного не увидел.

Текущий обходной путь

В настоящее время мой обходной путь - отслеживать элемент G + до тех пор, пока не будут добавлены определенные элементы, а затем выполнить мое действие:

(function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js';

    po.onload = function() {
        var awaitRender = function(element) {
            if (element.firstChild &&
                element.firstChild.firstChild &&
                element.firstChild.firstChild.tagName.toUpperCase() === 'IFRAME') {
                alert('rendered!');
            } else {
                window.setTimeout(function() { awaitRender(element) }, 100);
            }
        };

        var buttons = document.getElementsByClassName('googleplus-button');
        for(var i = 0; i < buttons.length; i++) {
            awaitRender(buttons[i]);
        }
    }
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(po, s);
})();

Вопрос

Я хотел бы знать, пожалуйста, если есть либо:

  • Правильный способ сделать это для кнопок G +
  • Лучшая реализация, чем то, что я взломал вместе выше

1 Ответ

2 голосов
/ 05 апреля 2012

Попробуйте присоединить обратный вызов onload к iframe.

. Возможно, вам придется поднять атрибут src, если iframe загружен перед присоединением обратного вызова onload.

...