FacebookのFb.ui実行時にIEだけエラーが発生する時の対処方法
先に結論
APIに渡すパラメータが長すぎると、IEのURL文字長限界たURLをAPI内部で呼び出してしまい、エラーが発生する
対策 : パラメータを適度長さに留める
参考 : マイクロソフト サポート オンライン | URL に使用可能な文字数は最大 2,083 文字
例
FB.ui({ method: "feed" , message: "ながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージ" , name: "ながーいメッセージ" , link: "http://www.google.co.jp" , caption: "ながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージながーいメッセージ" }, function(res){ if( res && res.post_id ){ }else{ } });
とかやると、IEでだけ「指定されたリソースは見つかりません」とエラーが出る
理由
Facebook の Fb.ui は、内部で渡されたパラメータを変換して、http://www.facebook.com/fbml/ajax/uiserver.php に渡して呼び出している
Fb.ui に渡したパラメータがでかいと、呼び出しを行う時に、IEのURL文字長限界を超えてしまいエラーが発生する
そんな感じ