1

ユーザーが自分のパフォーマンスについてツイートしたときにボーナス ポイントを付与するための Web インテント統合を含む Facebook アプリがあります。このアプリは、Facebook 以外のすべてのブラウザーで問題なく動作し、Facebook 内で実行する場合は IE9 を除くすべてのブラウザーで問題なく動作します。この問題は、Facebook が iframe 内でコードを実行する方法に起因しているようです。

表示されている特定のエラーは、hubclient.js のページ読み込み中に発生します (7 行目): プロパティ insertBefore の値を取得できません。

コードは、 https: //dev.twitter.com/docs/intents/events に基づいてアプリに統合されています

ドキュメント ヘッドには、Twitter プラットフォーム API をセットアップするための次のスクリプトがあります。

<script type="text/javascript" charset="utf-8">
  window.twttr = (function (d,s,id) {
    var t, js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
    js.src="//platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
    return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
  }(document, "script", "twitter-wjs"));
</script>

次に、ドキュメント本文内で単純な [フォロー] ボタンを使用していました

<a href="https://twitter.com/clearcreativity" class="twitter-follow-button" data-show-count="false">Follow</a>

最後に、$(document).ready() ブロックにラップされたイベント バインディングがあります。

$(document).ready(function(){
    twttr.ready(function (twttr) {
    twttr.events.bind('tweet', function(event) {
            //Notify and potentially give credit for a tweet
        });
    });
});
4

1 に答える 1

0

この問題についてさまざまな解決オプションを何度も試してみたところ、iframe 内で実行する際のプラットフォーム スクリプトの非同期読み込みに関連しているようです。この問題を解決するために、プラットフォーム API のロードを、ページのロードの最後に同期呼び出しになるように単純に移動しました。

    <script src="https://platform.twitter.com/widgets.js"></script>
<body>

そしてもちろん、コード内の twttr へのすべての参照が

$(document).ready();
于 2012-07-08T10:41:46.250 に答える