1

我有一些 html5 postMessage 代码:

    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。所以在一页上,我有这个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 回答