javascript如何在窗体中控制弹出网页的数量?

JavaScript026

javascript如何在窗体中控制弹出网页的数量?,第1张

是不是比如你限制只能打开3个窗体,如果你现在已经打开了3个,要等你关掉一个才能继续打开?

如果要实现这样,你可以把下面的代码复制过去,我下面要弹出的窗体是2.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title>无标题文档</title>

</head>

<body >

<input type="button" value="弹出窗口" onclick="openwin()"/>

<input type="hidden" name="n"id="n" value="0"/>

<script language="javascript">

function openwin()

{

var n=document.getElementById("n")

if(n.value<=2) //这里改成你要限制的窗体数量

{

var win=window.open('2.html','_blank','resizable=no')

n.value++

document.body.innerHTML+=n.value

}

function a()

{

document.write("\<script\>alert('sdf')\</script\>")

}

}

</script>

</body>

</html>

然后你在2.html的body中添加如下代码:

<script>window.onbeforeunload=function(){window.opener.document.all.n.value-=1}</script>

这个要看具体的代码实现。

如果代码实现是显示/隐藏原本在HTML中的元素,那就把隐藏的元素复制一份,JS代码复制一份改改名字就可以,虽然低端,胜在实现快。

如果是动态创建,那就复杂一点了,需要修改创建的元素的标识来分别对应不同的弹窗。包括创建的元素ID,创建出的元素的关闭按钮绑定事件等等。

如果考虑第三方组件,那就很多了,layerui里的layer组件是个不错的选择。

思路:

如果要输入多个信息,那么原生的提示框肯定不符合要求,需要自己定义。

一般都是使用div层模拟提示框,这样就可以随便布局了。

代码示例:

1、定义CSS

<style type="text/css">

        body {

            height: 100%

            overflow: auto

            margin: 0

        }

        #test_Div {

            position: fixed

            _position: absolute

            top: 50%

            left: 50%

            border: 2px solid #C0C0C0/*弹出框边框样式*/

            background-color: #FFFFFF/*弹出框背景色*/

            display:none

        }

        * html {

            overflow: hidden

            position: absolute

        }

    </style> 2、简单点,引入JQuery

 <script type="text/javascript" src="js/jquery.min.js"></script>

    <script type="text/javascript" src="js/jquery_ui/js/jquery-ui-1.9.2.custom.min.js"></script> 3、弹出层

        function show_Win(div_Win, tr_Title, event) {

            var s_Width = document.documentElement.scrollWidth //滚动 宽度

            var s_Height = document.documentElement.scrollHeight //滚动 高度

            var js_Title = $(document.getElementById(tr_Title)) //标题

            js_Title.css("cursor", "move")

            //创建遮罩层

            $("<div id=\"div_Bg\"></div>").css({ "position": "absolute", "left": "0px", "right": "0px", "width": s_Width + "px", "height": s_Height + "px", "background-color": "#ffffff", "opacity": "0.6" }).prependTo("body")

            //获取弹出层

            var msgObj = $("#" + div_Win)

            msgObj.css('display', 'block') //必须先弹出此行,否则msgObj[0].offsetHeight为0,因为"display":"none"时,offsetHeight无法取到数据;如果弹出框为table,则为'',如果为div,则为block,否则textbox长度无法充满td

            //y轴位置

            var js_Top = -parseInt(msgObj.height()) / 2 + "px"

            //x轴位置

            var js_Left = -parseInt(msgObj.width()) / 2 + "px"

            msgObj.css({ "margin-left": js_Left, "margin-top": js_Top })

            //使弹出层可移动

            msgObj.draggable({ handle: js_Title, scroll: false })

        } 4、调用

<input type="button" value="测试弹出框" onclick="show_Win('div_Test', 'title', event)" />

        <div id="div_Test">

            <div id="title" style="border: 1px solid red">标题</div>

            内容

        </div>