处理Flex 页面的后退/前进/刷新/关闭事件

Posted by wpm on Feb 28, 2009 in Flex |

浏览器刷新后,所以东西都要 重新加载,为避免用户出现误操作,我们可以做些相应的处理,当用户关闭窗口的时候,弹出提示对话框,用户确认后再关闭。

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

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

Java代码
  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>  

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

Java代码
  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.      }  
 

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


From:

http://flexblog.faratasystems.com/?m=20061217

http://hi.baidu.com/%C7%E0%B5%BA%BD%F0%F6%CE/blog/item/349e34019acd2ed1277fb5b5.html

Tags: , , , ,