4

仅当 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+ 按钮执行此操作的正确方法
  • 我在上面一起破解的更好的实现
4

1 回答 1

2

尝试将onload回调附加到iframe.

在附加回调之前,您可能需要碰撞src属性以防iframe加载。onload

于 2012-04-04T22:22:34.180 回答