Jquery 棘手的:惊喜“;“正在加载…”;Firefox中用于JSONP轮询的标题

Jquery 棘手的:惊喜“;“正在加载…”;Firefox中用于JSONP轮询的标题,jquery,ajax,firefox,cross-domain,jsonp,Jquery,Ajax,Firefox,Cross Domain,Jsonp,我正在开发一个jQuery插件,人们可以将其包含在自己的页面中。该插件在我正在运行的服务上生成作业,该服务位于不同的域上 为了突破域边界,我正在使用jQuery的JSONP功能,它可以很好地生成作业。但是,我还需要显示“进度”(0->100%)。到目前为止,我的计划是持续“投票”工作的进展(comet会更好,但AFAIK不可能跨域) 问题是,每秒钟轮询一次进度会导致Firefox在标签标题中不断闪现“加载…”,这让我非常恼火。(Firefox之所以这样做,是因为JSONP通过附加到DOM的脚本标

我正在开发一个jQuery插件,人们可以将其包含在自己的页面中。该插件在我正在运行的服务上生成作业,该服务位于不同的域上

为了突破域边界,我正在使用jQuery的JSONP功能,它可以很好地生成作业。但是,我还需要显示“进度”(0->100%)。到目前为止,我的计划是持续“投票”工作的进展(comet会更好,但AFAIK不可能跨域)

问题是,每秒钟轮询一次进度会导致Firefox在标签标题中不断闪现“加载…”,这让我非常恼火。(Firefox之所以这样做,是因为JSONP通过附加到DOM的脚本标记来工作,然后将其“加载”)

所以我的问题是:

是否有可能超越“加载…”选项卡标题消息-或者-是否有更好的方法以跨域方式“流式传输”进度更新


--Felix Geisendörfer

不幸的是,ajax调用只会在完成后返回,因此无法让它更新进度

我建议你用一个或什么的


如果绝对需要显示精确的加载进度,您可能需要从不同的角度进行处理。

不幸的是,ajax调用只会在完成后返回,因此无法让它更新进度

我建议你用一个或什么的


如果绝对需要显示精确的加载进度,您可能需要从不同的角度进行处理。

如果这是一个长时间运行的作业,您可能可以获得一些平均运行时间,并为用户伪造它,使用不频繁的轮询来调整伪造的完成百分比

假设一份普通的工作需要十分钟。您可以计算平均每秒应完成的百分比,并完全在客户端更新该百分比

然后,当您的第三十二个计时器用完时,轮询服务器以获得实际完成百分比,并更新进度条的速率,以便客户端上的假任务将在服务器作业的新估计完成时间完成


你可以做一些计算,在平均性能和当前测量的时间之间找到一个中间点,但这取决于运行作业时间的变化。

如果是长时间运行的作业,也许你可以得到一些平均运行时间,并为用户伪造它,使用不频繁轮询调整伪造的完成百分比

假设一份普通的工作需要十分钟。您可以计算平均每秒应完成的百分比,并完全在客户端更新该百分比

然后,当您的第三十二个计时器用完时,轮询服务器以获得实际完成百分比,并更新进度条的速率,以便客户端上的假任务将在服务器作业的新估计完成时间完成

你可以做一些计算,在你的平均表现和你当前测量的时间之间找到一个中间点,但这取决于运行作业时间的变化。

如今,支持越来越普遍。现在,您可以通过使用CORS来确定跨域XMLHttpRequests来正确地解决这个问题,而检测到CORS支持的缺乏并对较旧的浏览器使用JSONP并不重要

第一个链接上有示例检测代码,详细介绍了它的工作原理,如果您需要有关浏览器兼容性的详细信息,我几天前更新了

其要点是:

  • 任何现代WebKit浏览器(Safari 4+、Chrome 3+、new Flock等)
  • 任何Gecko 1.9.1+(Firefox 3.5+、SeaMonkey 2.0+等)
  • InternetExplorer8+和基于它的任何东西(Sleipnir等)……但需要注意的是,它没有实现在请求中传递凭据和cookie的标志
值得注意的例外是:

  • Opera(截至10.61无支持)
  • 卡米诺(2.0.5基于Gecko1.9.0(Firefox3.0))
  • Arora(从Arora 0.10.2开始,它有API,但是一个bug会导致请求失败)
如今,支持越来越广泛。现在,您可以通过使用CORS来确定跨域XMLHttpRequests来正确地解决这个问题,而检测到CORS支持的缺乏并对较旧的浏览器使用JSONP并不重要

第一个链接上有示例检测代码,详细介绍了它的工作原理,如果您需要有关浏览器兼容性的详细信息,我几天前更新了

其要点是:

  • 任何现代WebKit浏览器(Safari 4+、Chrome 3+、new Flock等)
  • 任何Gecko 1.9.1+(Firefox 3.5+、SeaMonkey 2.0+等)
  • InternetExplorer8+和基于它的任何东西(Sleipnir等)……但需要注意的是,它没有实现在请求中传递凭据和cookie的标志
值得注意的例外是:

  • Opera(截至10.61无支持)
  • 卡米诺(2.0.5基于Gecko1.9.0(Firefox3.0))
  • Arora(从Arora 0.10.2开始,它有API,但是一个bug会导致请求失败)

如果我没有说清楚,很抱歉。这与AJAX调用的进度无关。这是关于在我的服务器上运行的作业的进度,可以通过AJAX调用进行轮询。我也没有给你答案:(抱歉,如果我没有说清楚的话。这不是关于AJAX调用的进度。这是关于在我的服务器上运行的作业的进度,可以通过AJAX调用进行轮询。明白了,抱歉,我误解了。我也没有给你答案:(是的,这基本上就是我最后做的:)。有时最好只是作弊。:)是的,这基本上就是我最后做的:)。有时最好只是作弊。:)