由于使用window.showModalDialog和window.showModelessDialog都不能直接获取前一个窗口或对话框的window对象,所以对这两个方法做一下包装,见下
var NS = { showModalDialog : function(sURL,vArguments,sFeatures){ var vArguments = vArguments || {}; var sFeatures = sFeatures || ''; window.showModalDialog(sURL,{parentWindow:window,args:vArguments},sFeatures); }, showModelessDialog : function(sURL,vArguments,sFeatures){ var vArguments = vArguments || {}; var sFeatures = sFeatures || ''; window.showModelessDialog(sURL,{parentWindow:window,args:vArguments},sFeatures); } };
跳转页面代码如下
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>页面超时</title> <base target="_self"> <SCRIPT language=JavaScript> function isDialog(w){ var openerType = typeof(w.opener); var dialogWidthType = typeof(w.dialogWidth); if (openerType == 'undefined' && dialogWidthType == 'string') { return true; } else { return false; } } function forwardWindow(w){ if(w.opener){ go2Login(w.opener); if (!w.closed){ w.close(); w = null; } }else{ w.open("login.html", "_top"); } } function forwardDialog(w,parentWindow) { w.close(); w = null; go2Login(parentWindow); } function go2Login(w) { if(isDialog(w)){ var parentWindow = w.dialogArguments.parentWindow; if(parentWindow) forwardDialog(w,parentWindow); }else{ forwardWindow(w); } } </SCRIPT> </HEAD> <BODY οnlοad="go2Login(window);"> </BODY> </HTML>
就这两段代码花费了我好几天的时间……还没有几行的工作量,考核又要垫底了