我们知道 Flex 做的 web 页面在整个程序中只有一个 url, 当我们按了 IE 上的后退/前进/刷新/关闭时就会退出到第一次 load 时的页面,重新加载过。
在网上搜过很多,利用Javascript并不能实现屏蔽 IE 的后退/前进/刷新/关闭各功能。
在朋友介绍的一个网站[url]https://www.photoshop.com[/url]当你登录后就会监听IE 的后退/前进/刷新/关闭各功能,提示是否要执行。看了这个网站的原代码,再在网上搜了一下,终于发觉他是怎样实现的(原文:[url]http://flexblog.faratasystems.com/?m=20061217[/url])。
通过javascript 的 onbeforeunload 和 onunload 事件与 ActionScript 的addCallback方法 (如下边的“getUnsavedDataWarning();”方法)来实现监听:
1. 在 index.template.html 中增加javascript
[code]
<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>
[/code]
2.在 Flex 的 application 页面里加增一个addCallback, 在页面加载完后就addCallback:
[code]
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;
}
);
}
[/code]
这样就可以防止 Flex 页面的意外后退/前进/刷新/关闭了。
在网上搜过很多,利用Javascript并不能实现屏蔽 IE 的后退/前进/刷新/关闭各功能。
在朋友介绍的一个网站[url]https://www.photoshop.com[/url]当你登录后就会监听IE 的后退/前进/刷新/关闭各功能,提示是否要执行。看了这个网站的原代码,再在网上搜了一下,终于发觉他是怎样实现的(原文:[url]http://flexblog.faratasystems.com/?m=20061217[/url])。
通过javascript 的 onbeforeunload 和 onunload 事件与 ActionScript 的addCallback方法 (如下边的“getUnsavedDataWarning();”方法)来实现监听:
1. 在 index.template.html 中增加javascript
[code]
<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>
[/code]
2.在 Flex 的 application 页面里加增一个addCallback, 在页面加载完后就addCallback:
[code]
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;
}
);
}
[/code]
这样就可以防止 Flex 页面的意外后退/前进/刷新/关闭了。