0

私のウェブサイトで、現在のユーザーがすでにそのファンページを気に入っているかどうかを確認します。そうでない場合は、ヒントとしてピンクの矢印を表示します。

これは、ページを開いてすべてが読み込まれるのを待っているときに正しく機能するようです。ただし、アドレスを入力してEnterキーを押すだけで、すぐに別のブラウザタブに切り替えると、ファンページが気に入っていても、後で戻ってピンク色の矢印を見つけることができます。

検出方法は次のとおりです(で呼び出されます$(document).ready())。

function showLikeHint() {
    if (typeof FB === 'undefined') {
        setTimeout(showLikeHint, 100);
        return;
    }

    FB.api('/me/likes/339255156110755', {limit: 1}, function(r) {
        try {
            if (FB.getUserID() != "" && r.data.length == 1)
                iLikeFanpage();
            else
                iDontLikeFanpage();
        } catch (e) {
            setTimeout(showLikeHint, 200);
        }
    });
}

非表示のタブで実行している場合、API(つまりFBオブジェクト)の動作が異なる可能性はありますか?信じられませんが、他に何が原因なのかわかりません...

この問題はhttp://lolkitten.org/で発生し、最新のChromeで再現できます。

4

2 に答える 2

0

これは、brwoserビューポートに表示されるタブに関係ありません。関数showLikeHintを内部に配置する必要があります。これは、HTMLドキュメントが読み込まれ、DOMの準備ができたときに呼び出され、ページ$(window).load全体が完全に読み込まれたときに呼び出されます。 、すべてのフレーム、オブジェクト、画像を含め、これがお役に立てば幸いです。$(document).ready()$(window).load

于 2013-03-10T14:25:30.080 に答える
0

問題を見つけました。ユーザーがまだ認証されていない場合は、r.dataになりますundefined。それに対する私の解決策は次のとおりです。

FB.getLoginStatus(function (loginResponse) {
    if (loginResponse.status !== 'connected') {
        iDontLikeFanpage();
        return;
    }

    FB.api('/me/likes/339255156110755', {limit: 1}, function(r) {
        try {
            var likeData = r.data;
            if (typeof likeData === 'undefined') {
                setTimeout(showLikeHint, 200);
                return;
            }

            if (FB.getUserID() != "" && likeData.length == 1)
                iLikeFanpage();
            else
                iDontLikeFanpage();
        } catch (e) {
            setTimeout(showLikeHint, 200);
        }
    });
}); 
于 2013-03-31T01:21:37.757 に答える