倒计时自动刷新;什么时候没有互动性

时间:2012-11-12 19:24:15

标签: jquery actionscript-3 flash browser refresh

我使用AS3 / Flash构建了一个Web应用程序。该应用程序作为自助服务终端在触摸屏显示器上显示,因此没有键盘或鼠标。目前我只使用简单的元刷新每10分钟刷新一次页面。

问题:当用户与应用程序进行交互时,10分钟倒计时一直在后台运行,页面会在内容与内容交互时自动刷新。

我需要应用程序,浏览器扩展或jquery片段来监视是否有任何交互性,并在用户停止交互后刷新。因此,如果用户停止,则开始倒计时10分钟。如果下一个用户开始使用它,则倒计时重新开始。

这是我遇到的类似讨论,但它在文件更改。 How do I make Firefox auto-refresh on file change?

2 个答案:

答案 0 :(得分:0)

您应该查看某种自助服务终端模式扩展程序。使用脚本刷新页面的问题是,如果连接断开,浏览器最终会在404页面上被攻击。由于没有键盘,没有人可以按F5刷新它。

答案 1 :(得分:0)

希望这有助于...使用计时器检查舞台上的交互,并将URLLoader指向Web服务域上的测试文件,以检查是否所有内容都已启动并运行。如果是,请刷新在javascript上调用location.reload

package  {
    import flash.display.Stage;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.events.MouseEvent;
    import flash.events.ProgressEvent;
    import flash.events.TimerEvent;
    import flash.events.TouchEvent;
    import flash.external.ExternalInterface;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.utils.Timer;

    public class TimeoutRefresh {

        private var tt:Timer;
        private var online:Boolean;
        private var ldr:URLLoader;

        public function TimeoutRefresh(stageRef:Stage, minutes:int) {
            //set up timer
            tt = new Timer(minutes * 60 * 1000);
            tt.addEventListener(TimerEvent.TIMER, checkConnection);
            tt.start();
            //listen for interaction
            stageRef.addEventListener(TouchEvent.TOUCH_BEGIN, refreshTimer);
            stageRef.addEventListener(MouseEvent.CLICK, refreshTimer);
        }

        private function refreshTimer(e:MouseEvent):void {
            //some interaction on stage, restart timer
            tt.reset();
            tt.start();
        }

        private function checkConnection(e:TimerEvent):void {
            //no interaction, stop the timer
            tt.stop();
            //check for internet connection
            var req:URLRequest = new URLRequest("www.yourWebserviceDomain.com/aTestFile.txt");
            ldr = new URLLoader(req);
            ldr.addEventListener(IOErrorEvent.IO_ERROR, onIoErrorEvent);
            ldr.addEventListener(ProgressEvent.PROGRESS, onLoaderActivity);
            ldr.addEventListener(Event.COMPLETE, onLoaderActivity);
        }

        private function onIoErrorEvent(e:IOErrorEvent):void {
            //The remote server is not working, maybe it fixes itself in a while...
            tt.reset();
            tt.start();
            //remove listeners
            checkConnectionDone();
        }

        private function onLoaderActivity(e:ProgressEvent):void {
            //The webservice is up and running, lets refresh...
            if (ExternalInterface.available) ExternalInterface.call("document.location.reload");
            //and reset timer
            tt.reset();
            tt.start();
            //remove listeners
            checkConnectionDone();
        }

        private function checkConnectionDone():void {
            if (ldr.bytesLoaded < ldr.bytesTotal) ldr.close();
            ldr.removeEventListener(IOErrorEvent.IO_ERROR, onIoErrorEvent);
            ldr.removeEventListener(ProgressEvent.PROGRESS, onLoaderActivity);
            ldr.removeEventListener(Event.COMPLETE, onLoaderActivity);
            ldr = null;
        }

    }

}