我使用AS3 / Flash构建了一个Web应用程序。该应用程序作为自助服务终端在触摸屏显示器上显示,因此没有键盘或鼠标。目前我只使用简单的元刷新每10分钟刷新一次页面。
问题:当用户与应用程序进行交互时,10分钟倒计时一直在后台运行,页面会在内容与内容交互时自动刷新。
我需要应用程序,浏览器扩展或jquery片段来监视是否有任何交互性,并在用户停止交互后刷新。因此,如果用户停止,则开始倒计时10分钟。如果下一个用户开始使用它,则倒计时重新开始。
这是我遇到的类似讨论,但它在文件更改。 How do I make Firefox auto-refresh on file change?
答案 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;
}
}
}