Facebook页面插件 - 动态重新呈现/更改宽度(响应/ RWD)

Krz*_*zos 8 javascript css php facebook responsive-design

我正在使用Facebook的"页面插件"小部件.在Facebook的页面上,它写道:

如果要在窗口调整大小时调整插件的宽度,则需要手动重新插入插件.

如何在不刷新页面的情况下动态更改此插件的宽度(例如,使用Firefox响应视图 - CTRL + M快捷方式).

是的,我已阅读过这篇文章,但这些解决方案都没有告诉我们如何重新渲染这个插件.

jro*_*web 19

对于JavaScript/jQuery方法,您可能希望收听窗口调整大小事件并重新加载Facebook页面插件Div容器.确保FB页面插件包裹在父div中,以便我们在重新加载div时可以使用它的大小.

<div id="pageContainer">
    <div class="fb-page" data-href="https://www.facebook.com/facebook" data-width="500" data-height="250" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/facebook"><a href="https://www.facebook.com/facebook">Facebook</a></blockquote></div></div>
</div>

$( window ).resize(function() {
    var container_width = $('#pageContainer').width();    
    $('#pageContainer').html('<div class="fb-page" data-href="https://www.facebook.com/facebook" data-width="' + container_width + '" data-height="250" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/facebook"><a href="https://www.facebook.com/facebook">Facebook</a></blockquote></div></div>');
    FB.XFBML.parse();    
});
Run Code Online (Sandbox Code Playgroud)

  • 我不会在这样的每个resize事件上调用它.请参阅Nicolás的答案,了解只有在窗口停止被用户调整大小后才调用此方法. (2认同)

小智 11

这个问题的解决方案是:

(function($){
    var a = null;
    $(window).resize(function(){
        if(a != null) {
            clearTimeout(a);
        }

        a = setTimeout(function(){
            FB.XFBML.parse();
        },1000)
    })
})(jQuery)
Run Code Online (Sandbox Code Playgroud)


Vic*_*rov 6

是的,facebook页面插件(以及其他插件)仅在页面加载时呈现.如果这个插件被隐藏(或渲染后窗口调整大小),你需要告诉FB重新渲染他的插件.这与在显示/调整大小后调用FB.XFBML.parse()完美配合.

你可以这样做:

在HTML中:

<div class="fb-page" data-href="{url}" data-hide-cover="false" data-show-facepile="true" data-show-posts="false"><div class="fb-xfbml-parse-ignore"><blockquote cite="{url}"><a href="{url}">{title}</a></blockquote></div></div>
Run Code Online (Sandbox Code Playgroud)

在Javascript中:

function changeFBPagePlugin(width, height, url) {

    if (!isNaN(width) && !isNaN(height)) {
        $(".fb-page").attr("data-width", width).attr("data-height", height);
    }
    if (url) {
        $(".fb-page").attr("data-href", url);
    }
    FB.XFBML.parse();
 }
Run Code Online (Sandbox Code Playgroud)

只需要重新渲染(如果你想隐藏后显示插件)

 changeFBPagePlugin(355, 244);
Run Code Online (Sandbox Code Playgroud)

要么

 changeFBPagePlugin(355, 244, "https://facebook.com/PageNameHere");
Run Code Online (Sandbox Code Playgroud)

如果你想更改其他FB页面插件