最近做一个效果:
一个页面有n条记录,点击一个小图标,运行后台程序查出数据,将数据显示为图,并在弹出的小窗口显示。弹出小窗口的时候要锁定父窗口,关闭解锁父窗口。
开始想使用模式窗口showModalDialog,但是这个对于ie支持,ff、google不支持(弹出来不会锁定父窗口)
判断浏览器,加入使用widow.open也不能解决。
最后只能是使用div的遮盖层了。具体说下:
1.jsp页面:
<a href="javascript:void(0)" onclick="configwin('<s:property value="type.id" />');"><img src="../img/statistics.gif" border="0" style="margin-left:10px"/></a>
点击图片会调用函数configwin,使用struts2的标签传值进去。为了避免跳转:href="javascript:void(0)"
使用ajax的框架prototype.js来发送请求获得相应的数据库数据。
为什么不使用直接的action的url呢?===action的最后都是转向一个页面,如果直接使用就会跳转到页面去。这点很重要
所以:
<script type="text/javascript" src="../js/prototype.js"></script>
<script type="text/javascript">
function configwin(id) {
var tmp = Math.random().toString();
var url = "proto_chart.action?tmp="+tmp+"&typeId="+id;
new Ajax.Request(url, {
method:'post',
asynchronous:true ,
onSuccess:function(req){
sAlert("chart/chart"+id+".jpg");
}
});
}
红字部分是:当浏览器向同一个url发请求,浏览器就会记忆下来,当接到相同请求的时候就不发请求了,直接用以往数据来返回,所以,添加了随机数,保证每次url都不同,Math是js内部对象,不是java的,直接使用即可,不需要引用。
蓝色部分是:封装了遮盖层的div的js。
内部流程说下:
请求给action,action从数据库提取值出来调用Jfreechart,并保存为jpg图片,命名为chartid。jpg
action返回是Action.none(空)
在封装了的js中将url作为img的src赋值,并弹出div来。
js如下(注:此代码是网上搜罗来加工了一小下的,感谢作者的无私贡献)
function sAlert(str){
var msgw,msgh,bordercolor;
msgw=300;
msgh=300;
titleheight=25;
bordercolor="#c51100";
titlecolor="#c51100";
var sWidth,sHeight;
sWidth=screen.width;
sHeight=screen.height;
var bgObj=document.createElement("div");
bgObj.setAttribute('id','bgDiv');
bgObj.style.position="absolute";
bgObj.style.top="0";
bgObj.style.background="#cccccc";
bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
bgObj.style.opacity="0.6";
bgObj.style.left="0";
bgObj.style.width=sWidth + "px";
bgObj.style.height=sHeight + "px";
bgObj.style.zIndex = "10000";
document.body.appendChild(bgObj);
var msgObj=document.createElement("div");
msgObj.setAttribute("id","msgDiv");
msgObj.setAttribute("align","center");
msgObj.style.background="white";
msgObj.style.border="1px solid " + bordercolor;
msgObj.style.position = "absolute";
msgObj.style.left = "50%";
msgObj.style.top = "50%";
msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
msgObj.style.marginLeft = "-225px" ;
msgObj.style.marginTop = -75+document.documentElement.scrollTop+"px";
msgObj.style.width = msgw + "px";
msgObj.style.height =msgh + "px";
msgObj.style.textAlign = "center";
msgObj.style.lineHeight ="25px";
msgObj.style.zIndex = "10001";
var title=document.createElement("h4");
title.setAttribute("id","msgTitle");
title.setAttribute("align","right");
title.style.margin="0";
title.style.padding="3px";
title.style.background=bordercolor;
title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
title.style.opacity="0.75";
title.style.border="1px solid " + bordercolor;
title.style.height="18px";
title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
title.style.color="white";
title.style.cursor="pointer";
title.innerHTML="close";
title.onclick=function(){
document.body.removeChild(bgObj);
document.getElementById("msgDiv").removeChild(title);
document.body.removeChild(msgObj);
};
document.body.appendChild(msgObj);
document.getElementById("msgDiv").appendChild(title);
var img=document.createElement("img");
img.style.margin="1em 0";
img.style.width = msgw-50 + "px";
img.style.height =msgh -50+ "px";
img.setAttribute("id","imgTxt");
img.src=str;
document.getElementById("msgDiv").appendChild(img);
}
分享到:
相关推荐
2. **打开锁定的压缩文件**:在WinRAR主界面中,找到并双击需要解锁的压缩文件,或者直接将其拖拽至WinRAR窗口内。 3. **创建新压缩文件**: - 右键点击已打开的文件列表中的任意位置,选择“添加到压缩文件…”...
在网页开发中,实现"点击登录弹出登录框"的效果是一种常见的用户交互设计,它可以提供良好的用户体验,使得用户无需离开当前页面即可完成登录操作。这个效果通常涉及到JavaScript和Ajax技术的运用。 首先,我们来...
- **禁止窗口移动**:如果你希望在锁定窗体时也阻止用户移动它,可以设置`FormBorderStyle`属性为`FixedDialog`或`None`,然后在解锁时恢复原来的值。 - **处理键盘和鼠标事件**:你可能还需要阻止键盘和鼠标事件,...
综上所述,批量解锁锁定的域帐户工具是应对大规模账户锁定问题的有效解决方案,它简化了管理流程,提升了安全管理效率。在日常运维中,合理利用这类工具,结合良好的安全策略,可以更好地维护企业的网络安全。
BitLocker 硬盘锁定解密方法 BitLocker 是 Windows 操作系统中的一种磁盘加密工具,可以保护计算机中的数据免受未经授权的访问。...同时,如果遇到无法弹出 BitLocker 解密窗口的问题,可以使用命令提示符来解锁硬盘。
oracle 用户被锁定解锁方法
易语言锁定解锁应用程序源码,锁定解锁应用程序,锁定到任务栏,Each,GetIndex,取对象枚举接口,枚举,重置,跳到,重新获取,Next,Skip,Reset,MultiByteToWideChar,动态调用子程序_API
### 如何解决Win7硬盘无法弹出BitLocker解密窗口的问题 随着信息技术的快速发展与互联网应用的日益广泛,数据安全和个人隐私保护变得尤为重要。对于个人用户及企业来说,确保存储在计算机上的敏感信息不被非法访问...
用于锁定/解锁任务栏图标。 适用于win7\win10,其它系统未测试,使用方法:脚本+程序完整路径。 如果任务栏没有,则锁定到任务栏,如果任务栏已存在则解锁。 示例: 任务栏图标.VBS C:\Program Files\internet ...
5. **关闭弹出层和解锁**:添加一个关闭按钮或使用ESC键来关闭弹出层,并移除锁屏效果。这需要添加额外的事件监听器。 ```javascript $("#closeButton, #popupLayer").on('click', function(e) { if (e.target.id ...
锁定文件目录或解锁文件目录 (锁定和解锁的批处理工具)
### SCOTT用户的解锁与锁定过程 #### 一、概述 在Oracle数据库管理中,SCOTT用户是一个常用的示例用户,通常用于演示各种数据库管理和开发任务。SCOTT用户的解锁与锁定是数据库管理员的一项基本操作,这对于确保...
VB 键盘锁定、解锁 让别人不能乱动我的电脑
3. 在属性窗口中,找到并双击“Internet协议版本4(TCP/IPv4)”或“Internet协议版本6(TCP/IPv6)”。 4. 选择“使用以下IP地址”和“使用以下DNS服务器地址”,然后输入所需的IP、子网掩码、默认网关和DNS服务器...
安装后打开软件,选择要查询的OU,然后选查询,查询完后可以按字段排列,比如按被锁定的排列,选择要解锁的,后点enable select就可以完成解锁 如果因病毒原因造成大面积域帐号锁定,可使用本工具来一次解所有的帐号...
"注册表锁定与解锁工具"就是为了满足这一需求而设计的。 该工具的主要功能包括: 1. **注册表锁定**:通过锁定注册表,可以防止未经授权的用户或恶意软件对注册表进行修改。一旦锁定,除了拥有管理员权限的用户外...
【文件夹锁定解锁示例VB源码】是一个基于Visual Basic(VB)开发的应用程序,它提供了对文件夹进行加锁和解锁的功能。VB是Microsoft公司推出的一种面向对象的编程语言,以其直观的语法和丰富的控件库而广受欢迎,...
锁定IE浏览器后,IE默认首页、搜索页及右键菜单等均不可被修改,建议你在确保系统干净,并做好自己的设置后再锁定IE设置项目。注意:本工具不负责修复IE各项设置,请首先确保上述设置正常。[1]锁定IE的所有设置,...
如果删除操作成功,程序会弹出一个消息框,告知用户注册表已成功解锁。 ### 实现细节与注意事项 1. **权限管理**:由于注册表的修改涉及到系统级操作,因此在编写此类代码时,需要确保程序有足够的权限执行这些...