1

私はいくつかのhtml5postMessageコードを持っています:

    window.addEventListener("message", FA.recieveMessage, false);

そのリスナーはこの関数を呼び出します。

FA.recieveMessage = function(e){
if (e.data == "closeFA"){
            console.log("Type of data: "+e.data);
}
};

現在、ie8では、このコードは機能しません。html5メッセージングをサポートしていないためです。だから私はタイプjsonpのajaxリクエストを送信することによってその関数を呼び出す方法があるかどうかを考えました!?

jsonpでメッセージングをエミュレートする方法はありますか?

jsonpリクエストを別のサーバーに送信した場合、それは新しいリクエストであり、現在トリガーされたすべてのイベントを認識しないことを意味しますか?

アップデート

さて、これが私が欲しいものです。iframeを閉じたい。したがって、1ページに次のJavaScriptがあります。

        $.ajax({url:      'http://api.apps.com/html/'+FA.appID,
      data:      {},
      dataType: 'jsonp',
      timeout:  10000,
      jsonp: "closeIFrame"
      });

これは、apps / htmlページにcloseIframe関数を呼び出すように指示する必要がありますか?

function closeIFrame() {
    jQuery("#fa-iframe-container").fadeOut(300, function(){ jQuery(this).remove(); });
FA.bannerShown = false;

}

4

1 に答える 1

1

はい、技術的にはjsonpを使用してメッセージングをエミュレートできます。各呼び出しは新しいリクエストになりますが、セッションは利用可能になるため、jsonpサービスは状態を認識できます。

アップデート

私の経験では、ファイル内で関数を呼び出すのではなく、各ファイルが関数を表すため、次のようなサービスを利用できます。

http://example.com/add?message=hello

http://example.com/get

于 2012-06-24T06:10:05.973 に答える