1

Facebook javascript SDKの「edge.create」コールバック関数を使用して、ユーザーがページの「いいね」ボタンをクリックしたときにアラートを送信しようとしています。最終的に私の目標は、クリックしたときにFacebookウィジェットのdivのサイズを動的に変更できるように、ページのスタイルを再生成することです。ただし、アラートに対してもコールバックを機能させることはできません。

<html lang="en">
<head>
    <title></title>
    <script   src="http://connect.facebook.net/en_US/all.js#appId=216985861663967&amp;xfbml=1"></script>
    <script>
        FB.Event.subscribe('edge.create', function() {
            alert('Liked');
        });
    </script>
</head>
<body>
<div id="fb-root"></div>
<fb:like send="false" layout="button_count" show_faces="false" font=""></fb:like>

</body>
</html>

これが機能しない理由はありますか?ボタンをクリックすると、エラーが発生します。

安全でないJavaScriptがURLを使用してフレームにアクセスしようとしました

後で、ドメイン、プロトコル、ポートが一致する必要があると言います。

4

3 に答える 3

2

あなたの説明から、あなたはローカルサーバー上のChrome / Safariでテストしていると思いますか?

Chrome / Safari

いいねボタンのURLを既存のWebアドレスに設定してみてください。

<fb:like href="http://google.com" ...

重要な注意点は、アラートは、Facebookが到達可能なURLに依存するLikeの成功に依存するということです。ローカルサーバー(例:http:// localhost:3000 / my-page.html)にのみ存在するURLを高く評価することはできません。明らかに、LikingGoogleはテスト修正です。代わりに、同じ効果を得るためにコードをステージングサーバーにプッシュすることもできますが、より多くの時間と労力がかかります。

この変更を行うと、Chrome 12 for Macで「いいね」ボタンとアラートが機能しますが、それでも同じエラーが表示されます。Chromeはiframeに敏感だと思います。エラーを回避できるとは思えません。

Firefox

上記の変更を行っても、Firefox 5forMacでは機能しません。Facebookのall.jsからエラーが発生e.root is undefinedし、「いいね」ボタンも表示されません。

all.jsFB.Event.subscribe()スクリプトをdivの下に移動するとfb-root、「いいね」ボタンが表示され、アラートはエラーなしで機能します。

インターネットエクスプローラ

Facebookのドキュメントによると<html>、Internet Explorerでレンダリングするボタンのタグに、FacebookのXML名前空間を追加する必要があります。

<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
于 2011-07-23T01:00:52.473 に答える
0

alert()Facebookアプリケーションでは、少なくともChromeでは使用できません(Firefoxで許可されている場合は、おそらくそれほど長くは使用されません)。

代わりに使用console.log()し、Javascriptコンソールを開いて、発行されるメッセージを確認してください。

于 2012-10-29T18:10:50.477 に答える
0

アプリケーション ID を指定する必要があります。まだアプリがない場合は、facebook の開発者セクションで作成してください。

例:

<script>
    window.fbAsyncInit = function() {
        FB._https = true;
        FB.init({appId: 'YOURAPP', status: true, cookie: true, xfbml: true, channelURL : 'http://www.YOURSITE/channel.html'});
        FB.Event.subscribe('edge.create', function(response) {
            alert('Liked');
        });
    };
</script>

PS http://www.YOURSITE/channel.htmlファイル内に、次の行を入れます -

<script src="http://connect.facebook.net/en_US/all.js"></script>
于 2011-11-04T19:35:38.680 に答える