jsp和flex页面缓存管理

监听FLEX页面的后退、前进、关闭、刷新  

 

 
 

我们知道 Flex 做的 web 页面在整个程序中只有一个 url, 当我们按了 IE 上的后退/前进/刷新/关闭时就会退出到第一次 load 时的页面,重新加载过。

在网上搜过很多,利用Javascript并不能实现屏蔽 IE 的后退/前进/刷新/关闭各功能。

在朋友介绍的一个网站https://www.photoshop.com当你登录后就会监听IE 的后退/前进/刷新/关闭各功能,提示是否要执行。看了这个网站的原代码,再在网上搜了一下,终于发觉他是怎样实现的(原文:http://flexblog.faratasystems.com/?m=20061217)。

通过javascript 的 onbeforeunload 和 onunload 事件与 ActionScript 的addCallback方法 (如下边的“getUnsavedDataWarning();”方法)来实现监听:

1. 在 index.template.html 中增加javascript

Java代码 监听FLEX页面的后退、前进、关闭、刷新 - dingtao-wgs - 程序员驿站

 

  1. <script language=”JavaScript” type=”text/javascript”>   
  2. //-------------------------------------------------------------------------------------------   
  3. // Specifies a function for the window's onbeforeunload event   
  4. // Call back to the getUnsavedDataWarning in our Flex app when the browser is about to unload   
  5. //-------------------------------------------------------------------------------------------   
  6. //window.onbeforeunload = function()    
  7.   
  8. window.onbeforeunload = onbeforeunload_handler;   
  9. function onbeforeunload_handler()    
  10. {   
  11.     var warning="";   
  12.     var fxControl = document.${application} || window.${application};   
  13.     if ( fxControl )   
  14.         if ( typeof fxControl.getUnsavedDataWarning=="function")    
  15.             warning = fxControl.getUnsavedDataWarning();    // This calls a function in our Flex app   
  16.        
  17.     if ( warning != '' )    
  18.         return warning;   
  19.     else    
  20.         return void(0);    
  21. }   
  22.   
  23.   
  24. //-------------------------------------------------------------------------------------------   
  25. // Specifies a function for the window's onunload event   
  26. // Call back to the javascriptOnUnload in our Flex app when the browser unloads   
  27. //-------------------------------------------------------------------------------------------   
  28. window.onunload = function()    
  29. {   
  30.     var fxControl = document.${application} || window.${application};   
  31.     if ( fxControl )   
  32.         if ( typeof fxControl.javascriptOnUnload=="function")    
  33.            fxControl.javascriptOnUnload();  // This calls a function in our Flex app   
  34. }   
  35. </script>  

 

<script language=”JavaScript” type=”text/javascript”>//-------------------------------------------------------------------------------------------// Specifies a function for the window's onbeforeunload event// Call back to the getUnsavedDataWarning in our Flex app when the browser is about to unload//-------------------------------------------------------------------------------------------//window.onbeforeunload = function() window.onbeforeunload = onbeforeunload_handler;function onbeforeunload_handler() { var warning=""; var fxControl = document.${application} || window.${application}; if ( fxControl ) if ( typeof fxControl.getUnsavedDataWarning=="function") warning = fxControl.getUnsavedDataWarning(); // This calls a function in our Flex app if ( warning != '' ) return warning; else return void(0); }//-------------------------------------------------------------------------------------------// Specifies a function for the window's onunload event// Call back to the javascriptOnUnload in our Flex app when the browser unloads//-------------------------------------------------------------------------------------------window.onunload = function() { var fxControl = document.${application} || window.${application}; if ( fxControl ) if ( typeof fxControl.javascriptOnUnload=="function") fxControl.javascriptOnUnload(); // This calls a function in our Flex app}</script>

2.在 Flex 的 application 页面里加增一个addCallback, 在页面加载完后就addCallback:

Java代码 监听FLEX页面的后退、前进、关闭、刷新 - dingtao-wgs - 程序员驿站

 

  1. private const UNSAVED_DATA_WARNING:String = 'You have unsaved changes. You will lose them if you continue.';   
  2.                
  3.     private function onCreationComplete():void {   
  4.         ExternalInterface.addCallback("getUnsavedDataWarning",   
  5.             function():String {   
  6.                 return UNSAVED_DATA_WARNING;   
  7.             }   
  8.         );   
  9.     }  

 

private const UNSAVED_DATA_WARNING:String = 'You have unsaved changes. You will lose them if you continue.'; private function onCreationComplete():void { ExternalInterface.addCallback("getUnsavedDataWarning", function():String { return UNSAVED_DATA_WARNING; } ); }

这样就可以防止 Flex 页面的意外后退/前进/刷新/关闭了。

posted on 2012-03-01 12:48  飞扬的天空  阅读(230)  评论(0)    收藏  举报