0

FB Graph apiを使用してユーザーのウォールに投稿しています。ウォールに投稿する関数は次のとおりです。

 function PostToWall()
 {

      var mymessage = 'my message';
      var mypic = 'http://myapp/a.jpg';
      var mylink = 'http://www.myapp.com';
      var myname = 'myApp';
      var mydesc = 'my desc .';
      FB.api('/me/feed', 'post', { message: mymessage, picture: mypic, link: mylink, name: myname, description: mydesc }, function (response) {
            if (!response || response.error) {
                       alert(response.error.message);
            } else {
                        alert('Post ID: ' + response.id);
             }
      });
      // alert('Do you want to continue ? ');
 };

それはクロムで正常に動作しますが、Firefoxで同じものを使用すると、不明なエラーが表示alert(response.error.message);され、Firefoxのエラーコンソールにエラーが表示されます

Error: uncaught exception: [Exception... "prompt aborted by user"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: resource://gre/components/nsPrompter.js :: openTabPrompt :: line 468"  data: no]

解決策は、関数の終了前にユーザーにプロンプ​​トを表示することであることがわかりました。最後の行alert('Do you want to continue?'); を参照してください。. このアラートを作成すると、Firefox でも正常に動作しますが、ユーザーにメッセージを表示したくありません。何が問題で、解決策は何ですか?

firefox 5.0 を使用しています。私のオペレーティングシステムはWindows 7です。

PostOnWall 関数は、次のような別の関数から呼び出されます。

function f(){

     PostToWall();
    ...
    ...
    //code to click a submit button
}
4

1 に答える 1

3

次のように、コールバック ハンドラで送信ボタンをクリックするコードを記述しました。

function PostToWallCallBackHandler(response) {
     if (!response || response.error) {
         alert(response.error.message);
     } else {
          document.getElementById('fbSubmit').click();
     }
 }
 function PostToWall(mymessage,mypic,mylink,myname,mydesc,callbackHandler) {
     FB.api('/me/feed', 'post', { message: mymessage, picture: mypic, link: mylink, name: myname, description: mydesc },function (response){callbackHandler(response);} );
 };

Chrome と Firefox、Safari と IE 9 の両方で正常に動作します。

于 2012-06-06T09:20:05.410 に答える