0

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

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

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

这是我遇到的类似讨论,但它是关于文件更改的。 如何让 Firefox 在文件更改时自动刷新?

4

2 回答 2

0

希望这会有所帮助...使用计时器检查舞台上的交互,并将 URLLoader 指向您的 Web 服务域上的测试文件,以检查一切是否正常运行。location.reload如果是这样,请刷新在 javascript 上调用 a 。

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;
        }

    }

}
于 2012-11-12T23:56:36.340 回答
0

您应该改用某种信息亭模式扩展。使用脚本刷新页面的问题是,如果连接断开,浏览器最终会出现 404 页面。由于没有键盘,所以没有人可以按 F5 来刷新它。

于 2012-11-12T20:43:43.960 回答