定期测试页面加载后添加到DOM的元素

时间:2009-10-26 17:16:45

标签: javascript jquery timer

我有一个上传视频的页面,然后对这些视频进行编码(很像Youtube)。编码部分可能需要一些时间,我想通过定期轮询页面内的编码状态来自动向用户显示编码,如果编码完成我想用“播放”按钮替换编码图标以便用户可以播放视频。

因为上传的视频本身列表是使用AJAX(使用jQuery)放入DOM的,所以我无法理解如何执行此操作。我想为此使用jQuery,但我不知道jQuery是否可以做到这一点。

所以步骤如下

  1. 用户上传视频
  2. 用户返回页面
  3. 用户“折叠打开”上传的视频列表,有些编码尚未编码,编码的有播放按钮,未编码的有沙漏图标
  4. 用户等待,直到尚未编码的视频的图标变为播放按钮
  5. 用户按下播放按钮,电影播放
  6. 我的问题仅在第4步。服务器端部分也完成了。

3 个答案:

答案 0 :(得分:2)

使用投票。设置一个间隔以每隔几秒轮询服务器(使用AJAX)以检查编码作业的状态。当服务器以“完成作业”响应时,更新DOM中的图标。

如果是我,我会让服务器端处理程序响应完成百分比(如果可能的话,它将取决于您的编码API)。

答案 1 :(得分:1)

如果问题是您不知道如何每隔X秒让页面轮询服务器,您可以使用setTimeout(函数,毫秒)和setInterval(函数,毫秒)使用javascript执行此操作。您将轮询代码放在函数定义中。

这是一个包含详细信息的article

答案 2 :(得分:0)

感谢您对setInterval的回应,这对我来说非常有帮助。

我在jQuery的.get()调用的异步性质上遇到了另外一些问题,我在函数中调用了这个问题,然后根据.get()调用的结果,返回true / false。如果你调用一个异步函数,这是行不通的,至少我发现了。异步函数可以调用另一个函数,我用它来改变DOM。

我对此问题的最终解决方案如下。 它有点hackish并且Javascript不会优雅地降级,但代码适用于原型系统,并且只能在少数几台计算机的受控环境中使用,因此可以保证Javascript的启用。

关于我的代码:我始终显示编码图标和播放图标,但隐藏不相关的图标。播放图标是可点击的,并弹出视频。

See pastebin for my solution.