【问题标题】:Invoking a function with jsonp使用 jsonp 调用函数
【发布时间】:2012-06-24 14:34:55
【问题描述】:

我有一些 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;

}

【问题讨论】:

  • long polling 帮忙吗?
  • 不确定这是否相关,至少不是我想要的

标签: javascript jquery


【解决方案1】:

是的,从技术上讲,您可以使用 jsonp 模拟消息传递,每次调用都是一个新请求,但会话将可用,因此 jsonp 服务可以感知状态。

更新

根据我的经验,您不会在文件中调用函数,而是每个文件都代表一个函数,因此您可能拥有以下服务:

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

http://example.com/get

【讨论】:

  • 再次查看我的更新...说实话,调用文件不在我的议程中,但如果别无选择,我将不得不这样做。所以你是说添加另一个javascript文件?..我上面的脚本错了吗?
  • 当我说调用文件时,我说的是包含 Web 服务的文件。
  • 无论采取何种行动方式,这对我来说听起来很像长轮询。这是一个推动。
猜你喜欢
  • 2015-09-20
  • 1970-01-01
  • 2020-03-30
  • 2013-04-25
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多