これは、Google Plus、Twitter、および Facebook の共有を有効にしたページです。動作を試して見ることができます:
https://www.famometer.com/usatoday
Twitter の共有ボタンは魅力的に機能しますが、g+ や fb のようなボタンを機能させる大きな悪夢があります。
最初の問題: [いいね] ボタンをクリックすると、コメント ダイアログが 1 秒間表示され、その後クリックしてもちらつき続け、共有できません。FFでjavascriptエラーなどを探してみましたが、エラーは見られません。
コードは次のとおりです。
直後に、次の<h:body>
Java Script コードがあります。
使用される名前空間:xmlns:fb="http://ogp.me/ns/fb#"
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '489611804432300',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true, // enable OAuth 2.0
xfbml : true // parse XFBML
});
// All your canvas and getLogin stuff here
//
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
次に、viewAd.xhtml に次のコードがあります。
<fb:like id="fbLike" href="https://www.famometer.com/usatoday" send="false" width="100" show_faces="false" layout="button_count" action="like" style="top:-3px"></fb:like>
私は本ですべてをしましたが、まだ適切に機能していません。FaceBook にログインしていない場合、サインインするためのダイアログが表示されますが、サインイン後、いいねボタンをクリックするたびにポップアップがちらつきます。誰かがその実装で何が間違っているのかを明らかにすることができますか?
2 番目の問題は g+ ボタンに関するものです
microdata 構造によって提供される URL、タイトル、および説明が入力されていません。
コードは次のとおりです。
使用される名前空間:xmlns:g="http://base.google.com/ns/1.0"
<div itemscope="itemscope" itemtype="http://schema.org/Product">
<span style="font-weight: bolder; font-size: 20px;" itemprop="name">#{adBB.business.businessName}</span><br/>
<span style="font-weight: bolder; color:gray;" itemprop="description">#{adBB.business.description}</span>
<h:panelGrid>
... some code here...
<g:plusone href="https://www.famometer.com/#{adBB.business.socialMedia.famometer}" size="medium" count="false"></g:plusone>
... some code here
</h:panelGrid>
</div>
これが JavaScript です - ページの下部にある非同期のものです。
<script type="text/javascript">
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
</script>
すべてを試しましたが、microdata タグではなくメタ タグから情報を読み取ります。
これらの問題の解決にご協力いただき、誠にありがとうございます。
ありがとう、サンディープ