在使用showModalDialog时会经常出现Session失效的问题,尤其是在这样的使用情况下:
首先window. showModalDialog,然后执行任何的创建新窗口有关的操作,比如<a href=”xxxx” target=”_blank”> ,或者在模态窗口中调用window.open,或者通过内建帧打开某一页面,这种情况下都有可能造成 Session丢失。
(可以先随便打开一个IE窗口,然后再新开一个IE窗口,然后登录OA进行上述有关操作,都有可能造成session丢失)
解决方法是使用父窗口的,也就是打开模态窗口的Window对象来进行新建操作。
具体步骤如下:
比如在原来的主窗口的列表页面有如下语句:
window.showModalDialog(url,’’,’status=no;dialogWidth=' + iwidth + 'px;dialogHeight=' + iheight + 'px;center=yes;help=no;')
把它修改成
window.showModalDialog(url,window,’status=no;dialogWidth=' + iwidth + 'px;dialogHeight=' + iheight +'px;center=yes;help=no;')
也就是说原来第二个参数是什么都不填的,现在填window 。
假设模态窗口中调用其他页面的
<a href="download.jsp?accessoryId=<%=zhengwen.getId()%>" target="_blank"> <%=zhengwen.getOldFileName()%> </a>
需要做如下修改
首先增加一个客户端函数,用于获得传入的主窗口window对象
<script language="javascript">
function openUrl(urlstr)
{
var openobj = window;
if(typeof(window.dialogArguments) == 'object')
{
openobj = window.dialogArguments;
}
openobj.open(urlstr,"_blank");
}
</script>
然后修改链接的打开方式
<a href="#" onClick="openUrl('download.jsp?accessoryId=<%=zhengwen.getId()%>')" ><%=zhengwen.getOldFileName()%></a>
这样Session就不会丢失了!
相关推荐
div层实现showModalDialog
This is a `window.showModalDialog()` shim using a modal HTML5 `<dialog>` element and ECMAScript 6 Generators. It was tested in the latest Google Chrome with the *Enable Experimental JavaScript* flag ...
showModalDialog参数传递和获
showModalDialog和showModelessDialog使用心得
showModalDialog参数详解 基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。 window.showModelessDialog()...
Selenium目前没有提供对IE模态对话框(即通过showModalDialog方法打开的弹出对话框)的处理。原因在于,模态对话框会将父页面的 JS挂起,直至对话框处理完毕才会继续执行父页面JS。因为Selenium的底层实现是基于JS的,...
解决三层或心上showModalDialog的问题_2
showModalDialog刷新窗口的例子
DIV 实现showModalDialog效果,内加树形效果
主要介绍showModalDialog的用法和参数的传递
window.showModalDialog的基本用法
网上找了好几个小时没有找到解决办法。最终还是自己解决了。...这样做就是用超链接把返回url转递到用showModalDialog打开的新窗口中,当showModalDialog返回时指到转来的url,最终不刷新父窗口。......
javascript代码模块之\Window.ShowModalDialog使用手册
ShowModalDialog函数的功能: 使用方法: 参数说明:
NULL 博文链接:https://shoushounihao.iteye.com/blog/1954623
使用window.showModalDialog的程序员都知道,该方法可返回值。但是如果遇到跨域时,就返回为underfine。本文档通过iframe镶嵌页面解决该问题。
解决三层或心上showModalDialog的问题_js
解决谷歌浏览器37+版本window.showModalDialog方法失效问题,最终版本。 10分你值得拥有
window.showModalDialog&&open.docx
网上自己找了很久,也没找到有用的方法。自己苦弄一天,终于解决。