2012-11-12 3 views
0

나는 AS3/Flash를 사용하여 웹 앱을 만들었습니다. 응용 프로그램은 터치 스크린 모니터에서 키오스크로 기능하므로 키보드 나 마우스가 없습니다. 지금은 간단한 메타 새로 고침을 사용하여 10 분마다 페이지를 새로 고침했습니다.카운트 다운 자동 새로 고침; 상호 작용이 없을 때

문제 : 사용자가 응용 프로그램과 상호 작용할 때 10 분 카운트 다운이 백그라운드에서 일관되게 실행되고 페이지가 콘텐츠와 계속 상호 작용하는 동안 자동으로 새로 고침됩니다.

응용 프로그램, 브라우저 확장 또는 jQuery 스 니펫이 필요합니다. 대화 형 기능이 있는지 여부를 모니터링하고 사용자가 상호 작용을 중단 한 후 새로 고칩니다. 따라서 사용자가 중지하면 10 분 동안 카운트 다운이 시작됩니다. 다음 사용자가 사용을 시작하면 카운트 다운이 다시 시작됩니다.

이것은 비슷한 논의이지만 필자는 파일 변경과 관련되어 있습니다. How do I make Firefox auto-refresh on file change?

답변

0

대신 일종의 키오스크 모드 확장을 살펴보아야합니다. 스크립트를 사용하여 페이지를 새로 고치는 문제는 연결이 끊어지면 브라우저가 404 페이지에서 종료된다는 것입니다. 키보드가 없기 때문에 아무도 F5를 눌러 새로 고침 할 수 없습니다.

+0

감사합니다. 당신은 정확하고 그것을 고려했습니다. 일부 키오스크는 연결 상태가 좋지 않은 곳에서 로컬로 호스팅됩니다 (Wi-Fi). 그러나 브라우저 확장을 설정하는 것이 이상적입니다. 네가 알기라도하면 내가 알게 해줘. 감사합니다. – user1328229

0

희망이 있으시면 ... 타이머를 사용하여 스테이지에서 상호 작용을 확인하고 웹 서비스 도메인의 테스트 파일로 URLLoader를 지정하여 모든 기능이 작동하는지 확인하십시오. 그렇다면 자바 스크립트에 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; 
     } 

    } 

} 
+0

다음 오류 메시지가 나타납니다. Line 71 \t 1120 : 정의되지 않은 속성 onProgress에 액세스합니다. – user1328229

+0

죄송합니다 @ user1328229, 이제 수정되었습니다. 아이디어는 첫 번째 진행 이벤트가 트리거 될 때로드를 취소하는 것입니다. 전체 파일을 이동할 필요가 없으므로 도달 할 수 있는지를 알아야합니다. – chq