0

ご存知のように、Facebook は多くの国でフィルタリングされており、ページに「いいね」ボタンを配置すると、「いいね」ボタンの代わりに、インターネット プロバイダーからの「アクセスが拒否されました」というメッセージが表示されます。問題は、ユーザーが Facebook を表示できるかどうかを検出できるかどうかです。そのため、ユーザーが Facebook にアクセスでき、フィルタリングされていない場合は、[いいね] ボタンを表示するだけです。

ありがとう

4

4 に答える 4

3

www.facebook.comをロードしてドメインにアクセスできるかどうかをテストし、アクセスできるfavicon.ico場合は iframe を表示します。

<iframe src="http://www.facebook.com/plugins/like.php" id="fbfm" style="display:none">
</iframe>

<script>
var fbicon = new Image();
fbicon.onload = function() {
  document.getElementById("fbfm").style.display = "";
};
fbicon.src = "http://www.facebook.com/favicon.ico?" + Math.random();
</script>
于 2012-09-20T11:18:29.923 に答える
1

ボタン自体に十分なだけの非常に小さな幅と高さをいいねボタンのiframeに設定できると思います. :)

別の方法として、AJAX 要求を作成して応答を確認する場合のように、Facebook に "ping" を実行することもできます。うまくいけば、ISP からのブロックされた応答には HTTP 403 ステータス コード、または適切な何かが含まれているはずですが、そうでない場合は、返された HTML をスクレイピングして、Facebook が表示されているのかエラー ページが表示されているのかを自分で判断してから、いいねボタンをレンダリングするかどうか。

于 2012-09-20T11:09:14.010 に答える
0

http://developers.facebook.com/docs/reference/javascript/にある Facebook JavaScript ライブラリを使用します。

FB.getLoginStatus(...) 関数を使用して、アプリケーションで実行する内容を確認して決定します。ログインしているかどうかに関係なく (connectedまたはnot_authorized)、Facebook にログインしており、いいねボタンを表示できます。ステータスがunknown「まだログインしていませんが、Facebook を表示できる」の場合。

Facebook スクリプトが値をロードしない、または値を返さない場合、Facebook はおそらくブロックされており、いいねボタンを表示したくありません。

注: JavaScript をリンクするには、Facebook でアプリ ID を作成する必要もあります。

于 2012-09-20T11:09:23.277 に答える
0

私のアドバイスは、ShareThisAddThisなどのサービスを使用することです。あなたの国でそれらがブロックされていない可能性があり (VPN の有無にかかわらず使用する前にテストできます)、ユーザーが利用可能な他のポータルで友人と Web サイトを共有できるという利点があります。彼ら。

Facebook がブロックされている国でこれらのサービスが利用できるかどうかを他の人が知ることは、確かに興味深いことです。

于 2012-09-20T11:13:57.490 に答える