window对象模型

334 阅读7分钟

一、window对象概述

代表浏览器中打开的窗口,通过window对象实现对浏览器的打开、关闭和控制等等;

1、window对象属性:

  • document  对话框中显示的当前文档;
  • location  指定当前文档的URL
  • name   对话框的名字;
  • status  状态栏中的当前信息;
  • top  表示最顶层的浏览器对话框。
  • parent  表示包含当前对话框的父对话框。
  • opener  表示打开当前对话框的父对话框。
  • self  表示当前对话框
  • screen  表示用户屏幕,提供屏幕尺寸,颜色深度等信息;
  • navigator   表示浏览器对象,用于获得与浏览器相关的信息。

2、window对象的方法

  • alert()    弹出一个警告对话框
  • confirm()  在确认对话框显示指定的字符串;
  • prompt()  弹出一个提示对话框;
  • open()   打开新浏览器对话框并且显示由URL或名字引用的文档,并设置创建对话的属性;
  • close()  关闭被引用的对话框;
  • scrollTo(x,y)把对话框滚动到指定的坐标;
  • setTimeout(timer)在指定毫秒数过后,对传递的表达式求值;
  • setinterval(interval)    指定周期性执行代码;
  • moveTo(x,y)将对话框移动到指定坐标处;
  • resizeTo(x,y)设置对话框的大小;
  • print()    相当于浏览器工具栏的“打印”按钮;

二、window对象的使用

window对象可以直接调用其方法和属性;

语法格式:

window.属性名

window.方法名(参数列表)

在实际运用中,js允许使用一个字符串来给窗口命名,也可以使用一些关键字来代替某些特定的窗口,例如:使用“parent”代表父级窗口。

语法格式:

parent.属性名

parent.方法名(参数列表)

1、对话框

响应用户需要而弹出的对话框

1、利用window对象的alert()方法可以弹出一个警告框,并且在警告框内可以显示提示字符串文本。

语法格式:window.alert(str)    str:显示的提示字符串

<body onload="al()">
    <script>
        function al(){
            window.alert("我是警告对话框呀!");
        }
    </script>
</body>

2、确认对话框

confirm()方法用于弹出一个确认对话框;

语法格式:

window.confirm(question)

question :显示提示的问题

var boo1 = window.confirm("确定要关闭我这个确定窗口吗?");
        if(boo1 == true){
            window.close();
        }

3、提示对话框

利用prompt()方法可以在浏览器窗口中弹出一个提示框

语法格式:window.prompt(str1,str2)  str1:指定要被显示的信息;str2:指定输入框的值;

<script>
        function pro(){
            var message = document.all("message");
            message.value = window.prompt(message.value,"返回的信息");
        }
    </script>
    <input id="message" type="text" size="40" value="请在此输入信息" />
    <br /><br />
    <input type="button" value="显示对话框" onclick="pro()" />

4、打开与关闭窗口

语法格式:WindowVar = window.open(url,windowname[,location]);
WindowVar:当前打开窗口的句柄;
url:目标窗口的url;
windowname:window对象的名称
location:打开窗口的参数;

语法格式:WindowVar = window.open(url,windowname[,location]);
WindowVar:当前打开窗口的句柄;
url:目标窗口的url;
windowname:window对象的名称
location:打开窗口的参数;

<form name="form1" method="post" action="">
        <input type="button" name="button" value="关闭子窗口" onclick="newclose()" />      
    </form>
    <script>
        var win;
        win = window.open("new.html","new","width=300,height=200");
        function newclose(){
            win.close();
        }
    </script>

5、控制窗口

(1)移动窗口

moveTo()方法:可以将窗口移动到指定坐标(x,y)处;

语法格式:window.moveTo(x,y)  x:窗口左上角的x的坐标;y:窗口左上角y的坐标;

resizeTo()可以将窗口改变成指定(x,y)大小;

语法格式:window.resizeTo(x,y)    x:窗口的水平宽度;y:窗口的垂直宽度;

screen对象:是JavaScript最的屏幕对象,反映了当前用户的屏幕设置;

属性有:

  • width   用户整个屏幕的水平尺寸,以像素为单位;
  • height 用户整个屏幕的垂直尺寸,以像素为单位;
  • pixelDepth   显示器的每个像素的位数;
  • colorDepth   返回当前颜色设置所用的位数;
  • availWidth  返回窗口内容区域的水平尺寸,亿像素为单位;
  • availHeight  返回窗口内容区域的垂直尺寸,以像素为单位;

</head>
<body onresize=resizeTo(300,300)>
    <script>
        window.resizeTo(300,300);  //指定窗口改变的大小
        window.moveTo(0,0);  //将窗口移动到指定坐标处;
        inter = setInterval("go()",1);
        var aa = 0;
        var bb = 0;
        var a = 0;
        var b = 0;
        function go(){
            try{
                if(aa == 0)
                    a = a+2;
                if(a>screen.availWidth-300)
                    aa = 1;
                if(aa == 1)
                    a = a - 2;
                if(a == 0)
                    aa = 0;
                if(bb == 0)
                    b = b+2;               
                if(b>screen.availHeight -300)
                   bb = 1;
                if(bb == 1)
                    b = b-2;
                if(b == 0)
                    bb = 0;
                window.moveTo(a,b);              
            }catch(e){}
        }
    </script>

(2)窗口滚动

利用window对象的scroll()方法可以指定窗口的当前位置,从而实现窗口滚动效果;

语法格式:scroll(x,y);   x:屏幕的横向坐标;y:屏幕的纵向坐标;

三种方法:

window.scroll(x,y)
window.scrollTo(x,y)
window.scrollBy(x,y)   x的值为正向右滚动,为负向左滚动;y的值为负向上滚动,为正向下滚动;

<table height="77" cellpadding="2" cellspacing="2" width="777" align="center" border="0">
        <tr>
            <td style="color: #666;" align="center"><img src="img/prpject.jpg" width="600px" height="2000px">               
            </td>
        </tr>
    </table>
    <script>
        var position = 0;
        function scroller(){
            if(true){
                position++;
                scroll(0,position);
                clearTimeout(timer);
                var timer = setTimeout("scroller()",10);
            }
        }
        scroller();
    </script>

(3)改变窗口大小;

window()对象的resizeBy()方法可以实现将当前窗口改变指定的大小(x,y),当x、y、、的值大于0时为扩大,小于0时为缩小;

语法格式:window.resizeBy(x,y)    //x为放大或缩小的水平宽度,y为放大或缩小的垂直宽度

<script>
    var winheight,winsize,x;
    function openwin(){
        winheight = 100;
        winsize = 100;
        x = 5;
        win2 = window.open("clone.html","","scrollbars='no'");
        win2.moveTo(0,0);
        win2.resizeTo(100,100);
        resize();
    }
    function resize(){
        if(winheight>=screen.availHeight-3)
            x = 0;
        win2.resizeBy(5,x);
        winheight += 5;
        winsize += 5;
        if(winsize >= screen.width - 5){
            winheight = 100;
            winsize100;
            x=5;
        return;
        }
    setTimeout("resize()",50);
    }
    </script>
    <a href="javascript:openwin()">打开一个自动改变大小的窗口</a>
</body>

(4)控制窗口状态栏

status()方法:主要功能是获取或设置浏览器窗口中状态栏的当前显示信息;

语法格式:window.status = str;l

defaultstatus()方法:window.defaultstatus = str;

(5)访问窗口历史

利用history对象实现访问窗口历史,history对象是一个只读的URL字符串数组;该对象主要用来存储一个最近所访问网页的URL地址的列表。

语法格式:[window.]history.property|method([parameters])

  • length   历史列表的长度,用于判断列表中的入口数目;
  • curent  当前文档的URL
  • next     历史列表的下一个URL
  • previous   历史列表的前一个URL

方法:back()退回前一页

forward()重新进入下一页

go()    进入指定的网页

<a href="javascript:window.history.forword();">forword</a>
<a href="javascript:window.history.back();">back</a>

<a href="javascript:window.history.forword();">forword</a>
    <a href="javascript:window.history.back();">back</a>

 <a href="javascript:window.history.go(window.history.length-1);">末尾</a>    访问窗口历史

(6)设置超时

setTimeout(要执行的代码,以毫秒为单位的时间);

在超时事件未执行前可以中止该超时设置,使用window对象的clearTimeout()方法实现。

语法格式:clearTimeout(timerId);

(7)窗口事件

  • 通用窗口事件

window。通用事件名 = 要执行的JavaScript代码;

onfocus事件    当浏览器窗口获得焦点时激活

onblur事件     浏览器窗口失去焦点时激活

onload事件    当文档完全载入窗口时触发,但需注意。事件并非完全同步

onunload     当文档未载入时触发

onresize     当用户改变窗口大小时触发

onerror事件   当出现JavaScript错误时,触发一个错误处理事件

  • 扩展窗口事件

onafterprint   窗口打印后触发

onbeforeprint 窗口被打印或被打印预览之前激活

onbeforeunload  窗口未被载入之前触发,发生于onunload事件之前

onhelp   当按帮助键(通常f1)被按下时触发。

onscroll 滚动条往任意方向滚动时触发。

onresizeend  调整大小的进程结束时激活,

onresizestart 调整大小的进程开始时激活,

案例:

<script>
        var flag = 0;
        var timeID;
        function beg(){
            var i =form1.num.value;
            i++;
            form1.num.value = i;
            timeID = setTimeout("beg()",1000);
        }
        function sta(){
            if(flag == 0){
                beg();
                flag = 1;
            }
        }
        function pau(){
            clearTimeout(timeID);
            flag = 0;
        }
    </script>
    <form id="form1" name="form1" method="post" action="">
        <input type="text" name="num" size="1" value="0" />
        <input type="button" name="start" value="开始计时" onclick="sta()" />
        <input type="button" name="pause" value="暂停计时" onclick="pau()" />
    </form>