page plugin(facebook埋め込み)をレスポンシブ対応する
2015年6月にfacebookをwebサイトに埋め込むには「like box」から「page plugin」に変更になりました。
単純に埋め込むにはこちらからコードを取得し貼り付けるだけでfacebookウィジェットを埋め込むことができます。
一応レスポンシブ対応していますが、仕様としては最初に表示された親ボックスサイズ(180px〜500pxの制限あり)に合わせてレスポンシブに可変されますが動的にウィンドウサイズは変更されません。
このままでもほぼ問題ないと思いますが、どうしてもダイナミックにレスポンシブ対応したい場合のjqueryを使った対応方法をメモ。
まずは通常の手順通りコードを埋め込む
下記のように埋め込みたい場所(ここでは<div id=”pageplugin”>ボックス内)に取得したコードを埋め込みます。(javascriptのコードは省略)
<div id="pageplugin">
<div class="fb-page" data-href=“xxxxxx” data-width="500px" data-height="600" data-small-header="true" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="false" data-show-posts="true">
<div class="fb-xfbml-parse-ignore "><blockquote cite="http://www.facebook.com/xxxxxxxx”><a href="http://www.facebook.com/xxxxxxxx”>xxxxxxx</a></blockquote></div>
</div>
</div>
ここでdata-widthはmax値である500pxを指定しておきます。親ボックスのpagepluginの幅は100%にしておく。
jqueryのコードを追加
下記のコードを追加する
<script type="text/javascript">
$(window).load(function () {
var htmlStr = $('#pageplugin').html();
var timer = false;
$(window).resize(function () {
if (timer !== false) {
clearTimeout(timer);
}
timer = setTimeout(function() {
$('#pageplugin').html(htmlStr);
window.FB.XFBML.parse();
}, 200);
});
});
</script>
ウィンドウのサイズが変わるたびにwindow.FB.XFBML.parse()で再読み込みしています。$(window).resizeはウィンドウサイズ変更中は呼ばれまくるのでタイマを使って呼ばれる頻度を減らします。
window.FB.XFBML.parse();だけで良さそうですがどうやら親ボックスの幅がよまれないようなのでボックスから書き換えます。
これで完了。
注意事項
ie8で動作確認したところ$(window).resizeが繰り返し読まれ続ける現象が発生。無限リロード問題という既知の問題っぽい。対応面倒なので<!–[if !(lte IE 8)]><!–>で囲ってie9以上とその他のブラウザでのダイナミックなレスポンシブ対応とすることにしよ。
-
その他Tips
関連記事
-
-
Google AdSenseを導入したので手順のメモ。Google Adsens …
-
-
以前LikeBoxを使った以下の記事を書いたのですが2015/6/23日をもって …
-
-
リモート会議するときに使用してたマイクスピーカーのAvaya B109が突然動か …
-
-
「Ctrl+C」 でクリップボードにコピーできるのは通常1つで、1つ前にコピーし …
-
-
デジカメの画像データなどファイル名を管理する時、「好きな名前」+「通し番号」を付 …
-
-
Windowsマシンを使って十数年、この度マシンをMacに移行することになりまし …
-
-
Google Analytics でアクセス解析したいとき、管理者からのアクセス …
-
-
WordPressのセキュリティ強化のため、adminユーザを削除してパスワード …
-
-
簡単に無料でネットショップが開設できるサービス「BASE」。無料ってのがとても魅 …
-
-
bootstrap便利です。WEB製作でレスポンシブ対応するときこれを使ってます …