一种简单的方法是播放器可以通过 JavaScript 更新您的 cookie,并且Flash 播放器可以每n秒调用一次 JavaScript 函数:
<script type="text/javascript">
function UpdateViewData(videoId, time)
{
//for a video with id 12345, sets a cookie called:
//hulu12345 with a value of the position
var cookieData = 'hulu' + videoId + '=' + time + '; expires=' + getDate() + ';path=/';
document.cookie = cookieData;
}
</script>
在 Flash 播放器中,ActionScript 可以频繁调用 JavaScript 以相当准确地更新播放器上次设置 cookie 的位置。每次调用它时,它都会用更新的数据覆盖 cookie:
import flash.external.ExternalInterface;
//in flash video player code,
//have variables for video ID and current player position
//every 5 seconds, call:
ExternalInterface.call("UpdateViewData", videoId, currentPlayerPosition);
//this will invoke a JS function on the host page named "UpdateViewData"
//and pass in the provided arguments
当您重新访问该页面时,服务器首先会检查您是否有一个名为“hulu{ID of video}”的 cookie,如果有,该 cookie 的值就是您上次查看时设置的位置。
再次(如开头所述)这是完成您所要求的非常简单的方法。我发现最好的学习方法是使用简单的实现,然后在更简单的情况被充分理解后增加复杂性。Hulu 可能会使用 AJAX 在幕后进行定期更新。(事实上,如果您在使用Firebug之类的工具观看视频的同时观看网络流量,您会偶尔看到对 的调用http://t2.hulu.com/v3/playback/position?...
)。