用JS弹出网页对话框后,后面那一层变灰,变成不可操做。

本文介绍了使用HTML和JavaScript实现的两种不同的弹窗效果。第一种弹窗通过创建多个DOM元素来构造一个自定义的提示框,而第二种则利用了iframe实现遮罩层和加载中的提示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<html> 
<head>
<title> </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<style type="text/css">
*{margin:0;padding:0;}
</style>
</head>

<body>
<p> 测试 </p> <p> 测试 </p> <p> 测试 </p> <p> 测试 </p> <p> 测试 </p> <p> 测试 </p> <p> 测试 </p>
<p> 测试 </p> <p> 测试 </p> <p> 测试 </p> <p> 测试 </p> <p> 测试 </p> <p> 测试 </p> <p> 测试 </p> <p> 测试 </p>
<input type="button" value="点击这里" onclick="sAlert('测试效果 <br/> 嗯!效果还不错! ');" />

<script type="text/javascript" language="javascript">
function sAlert(str){
var msgw,msgh,bordercolor;
msgw=400;//提示窗口的宽度
msgh=100;//提示窗口的高度
titleheight=25 //提示窗口标题高度
bordercolor="#336699";//提示窗口的边框颜色
titlecolor="#99CCFF";//提示窗口的标题颜色

var sWidth,sHeight;
sWidth=document.body.offsetWidth;//浏览器工作区域内页面宽度
sHeight=screen.height;//屏幕高度(垂直分辨率)


//背景层(大小与窗口有效区域相同,即当弹出对话框时,背景显示为放射状透明灰色)
var bgObj=document.createElement("div");//创建一个div对象(背景层)

//定义div属性,即相当于
// <div id="bgDiv" style="position:absolute; top:0; background-color:#777; filter:progid:DXImagesTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75); opacity:0.6; left:0; width:918px; height:768px; z-index:10000;"> </div>
bgObj.setAttribute("id","bgDiv");
//alert("***********")
bgObj.style.position="absolute";
bgObj.style.top="0";
bgObj.style.background="#777";
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);//在body内添加该div对象


var msgObj=document.createElement("div")//创建一个div对象(提示框层)
//定义div属性,即相当于
// <div id="msgDiv" align="center" style="background-color:white; border:1px solid #336699; position:absolute; left:50%; top:50%; font:12px/1.6em Verdana,Geneva,Arial,Helvetica,sans-serif; margin-left:-225px; margin-top:npx; width:400px; height:100px; text-align:center; line-height:25px; z-index:100001;"> </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";
//alert("***********")
var title=document.createElement("h4");//创建一个h4对象(提示框标题栏)
//定义h4的属性,即相当于
// <h4 id="msgTitle" align="right" style="margin:0; padding:3px; background-color:#336699; filter:progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100); opacity:0.75; border:1px solid #336699; height:18px; font:12px Verdana,Geneva,Arial,Helvetica,sans-serif; color:white; cursor:pointer;" onclick=""> 关闭 </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="关闭";
title.onclick=removeObj;

var button=document.createElement("input");//创建一个input对象(提示框按钮)
//定义input的属性,即相当于
// <input type="button" align="center" style="width:100px; align:center; margin-left:250px; margin-bottom:10px;" value="关闭">
button.setAttribute("type","button");
button.setAttribute("value","关闭");
button.style.width="60px";
button.style.align="center";
button.style.marginLeft="250px";
button.style.marginBottom="10px";
button.style.background=bordercolor;
button.style.border="1px solid "+ bordercolor;
button.style.color="white";
button.onclick=removeObj;

function removeObj(){//点击标题栏触发的事件
document.body.removeChild(bgObj);//删除背景层Div
document.getElementById("msgDiv").removeChild(title);//删除提示框的标题栏
document.body.removeChild(msgObj);//删除提示框层
}
document.body.appendChild(msgObj);//在body内添加提示框div对象msgObj
document.getElementById("msgDiv").appendChild(title);//在提示框div中添加标题栏对象title

var txt=document.createElement("p");//创建一个p对象(提示框提示信息)
//定义p的属性,即相当于
// <p style="margin:1em 0;" id="msgTxt"> 测试效果 </p>
txt.style.margin="1em 0"
txt.setAttribute("id","msgTxt");
txt.innerHTML=str;//来源于函数调用时的参数值
document.getElementById("msgDiv").appendChild(txt);//在提示框div中添加提示信息对象txt
document.getElementById("msgDiv").appendChild(button);//在提示框div中添加按钮对象button

}
</script>
</body>
</html>



第二种方式,不过在firefox上有一点问题
<html> 
<head>
<title> Mark </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<script type="text/javascript">
function GetMark()
{
var eif=document.getElementById('hideIframe');
if(eif!=null)
{
document.body.bgColor='black';
eif.style.display="";
}
else
{
var e=document.createElement("iframe");
e.id="hideIframe";
e.scrolling="no";
e.frameborder=0;
e.style.position="absolute";
e.style.top=0;
e.style.left=0;
e.style.margin=0;
e.style.width='100%';
e.style.height='100%';
e.style.filter="Alpha(style=0,opacity=30)";
document.body.appendChild(e);
document.body.bgColor='gray';
//e.document.body.bgColor='gray';
e.contentWindow.document.write(" <div align='center' style='position:absolute;top:"+document.body.clientHeight/2+";width:100%'> <font size='5'> <b> 正在处理您的请求...... </b> </font> </div>");
e.contentWindow.document.body.onclick=HideIf;
}
}
function HideIf()
{
document.getElementById('hideIframe').style.display="none";
document.body.bgColor="";
}
</script> </head>
<body style="margin:0px">
<input type="button" id="btn1" onclick="GetMark()" value="获取Mark"/>
<div style="background-color" />
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值