FB评论“再加载10条评论”按钮单击呼叫应用程序窗口调整大小事件无效

时间:2019-02-07 10:31:43

标签: javascript facebook facebook-comments fbml

我正在使用“ https://developers.facebook.com/docs/plugins/comments/” JavaScript SDK在我的应用程序中加载评论。 现在,我的问题是我无法跟踪评论iframe中的加载更多点击事件。我需要跟踪功能,以根据单击“加载更多”按钮事件后加载的评论div高度来设置父div高度。

1 个答案:

答案 0 :(得分:0)

我尝试了不同的解决方案,并使用“ https://jsfiddle.net/vb4xgcmo/”上提供的修改后的代码找到了一个工作示例。

window.fbAsyncInit = function () {
            FB.Event.subscribe( 'xfbml.render', function ( response ) {
                if ( $( '.fb-comments' ).length > 0 ) {
                    if ( $( '.fb-comments iframe' ).length > 0 ) {
                        iframeClickTracking( $( '.fb-comments iframe' ) );
                    }
                }
            } );
        }
        function iframeClickTracking( elm ) {
            elm.bind( 'mouseover', function () {
                console.log( 'in' );
                onIframeHeightChange( elm, function () {
                    $( '#section_1' ).css( 'height', $( '#fbv' ).height() );
                } );

            } );
            elm.bind( 'mouseout', function () {
                // If they leave the ad, then they aren't going to click. Kill the run event for resize.
                setTimeout( function () {
                    if ( elm.onIframeHeightChange ) {
                        $( '#section_1' ).css( 'height', $( '#fbv' ).height() );
                        clearTimeout( elm.onIframeHeightChange );
                    }
                }, 1000 );
            } );
        }

        function onIframeHeightChange( elm, callback ) {
            var lastHeight = elm.height(), newHeight;
            (function run() {
                newHeight = elm.height();
                if ( lastHeight != newHeight ) {
                    callback();
                }
                lastHeight = newHeight;
                if ( elm.onIframeHeightChange ) {
                    clearTimeout( elm.onIframeHeightChange );
                }
                elm.onIframeHeightChange = setTimeout( run, 1000 );
            })();
        }