《HTML5权威指南》之使用window对象

《HTML5权威指南》之使用window对象

1.获取window对象

可以用两种方式获得window对象,一种是使用document.defaultView,另外一种是使用所有浏览器都支持的全局变量window。

2.获取窗口信息

window对象的基本功能都是关于当前文档所显示的窗口的。下面说明窗口相关成员:

名称              说明                                          返回值
innerHeight     获取窗口内容区域的高度                             数值
innerWidth      获取窗口内容区域的宽度                             数值
outerHeight     获取窗口的高度,包括边框和菜单栏                    数值
outerWidth      获取窗口的宽度,包括边框和菜单栏                    数值
pageXOffset     获取窗口从左上角算起水平滚动过的像素数               数值
pageYOffset     获取窗口从左上角算起垂直滚动过的像素数               数值
screen          返回一个描述屏幕的Screen对象                       数值
screenLeft      获取从窗口左边缘到屏幕左边缘的像素数                 数值
screenX
screenTop       获取从窗口上边缘到屏幕上边缘的像素数                数值
screenY         

示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>location</title>
    <style>
        table {

             border-collapse: collapse;
             border: thin solid  black;
         }
        th,td {
             padding: 4px;
        }
     </style>
</head>
<body>
<table border="1">
    <tr>
        <th>outerWidth:</th><td id="ow"></td><th>outerHeight:</th><td id="oh"></td>
    </tr>
    <tr>
        <th>innerWidth:</th><td id="iw"></td><th>innerHeight:</th><td id="ih"></td>
    </tr>
    <tr>
        <th>screen.width:</th><td id="sw"></td><th>screen.height:</th><td id="sh"></td>
    </tr>
</table>
<script type="text/javascript">
    document.getElementById("ow").innerHTML = document.defaultView.outerWidth;
    document.getElementById("oh").innerHTML = document.defaultView.outerHeight;
    document.getElementById("iw").innerHTML = document.defaultView.innerWidth;
    document.getElementById("ih").innerHTML = document.defaultView.innerHeight;
    document.getElementById("sw").innerHTML = document.defaultView.screen.width;
    document.getElementById("sh").innerHTML = document.defaultView.screen.height;

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

screen对象有一些属性,下面对这些属性说明:

名称                  说明                                              返回
availHeight         屏幕上可供显示窗口部分的高度(排除工具栏和菜单栏)       数值
availWidth          屏幕上可供显示窗口部分的宽度(排除工具栏和菜单栏)       数值
colorDepth          屏幕颜色的深度                                      数值
height              屏幕的高度                                          数值
width               屏幕的宽度                                          数值

3.与窗口进行交互

window对象提供了一种方法,可以用它们与包含文档的窗口进行交互,下面做出总结:

名称                  说明                              返回
blur()              让窗口时区键盘焦点                   void
close()             关闭窗口(不是所有浏览器都支持)       void
focus()             让窗口获得键盘焦点                   void
print()             提示用户打印页面                     void
scrollBy(<x>,<y>)   让文档相对于当前位置进行滚动           void
scrollTo(<x>,<y>)   滚动到指定的位置                     void
stop()              停止载入文档                         void

4.对用户进行提示

window对象包含一组方法,能以不同的方式对用户进行提示,如下:

名称                  说明                                      返回
alert(msg)          向用户显示一个对话框并等候其关闭            void
confirm(msg)        向用户显示一个带有确认和取消提示的对话框        布尔值
prompt(msg,val)     显示对话框,提示用户输入一个值             字符串
showModalDialog(url)弹出一个对话框,显示指定的URL                void

5.获取基本信息

window对象能够返回某些基本信息对象,如下:

名称          说明                                  返回
document    返回与此窗口关联的document对象         Document
history     提供对浏览器历史的访问                 History
location    提供当前文档地址的详细信息               Location

说明:window.document和document对象是一样的,window.location和document.location对象是一样的。

6.使用浏览器历史

window.history属性返回一个History对象,可以用它对浏览器历史进行一些操作。下面介绍History对象定义的一些属性和方法。

名称              说明                                                      返回
back()          在浏览器中后退一步                                           void
forward()       在浏览器中前进一步                                           void
go(<index>)     转到相对于当前文档某个浏览历史位置,正值是前进,负值是后退         void
length          返回浏览器历史中的项目数量                                     数量
pushState(<state>,<title>,<url>)  向浏览器中添加一条目                        void
replaceState(<state>,<title>,<url>) 替换浏览器历史中的当前条目                 void
state           返回浏览器历史中关联文档状态的数据                              对象  

示例代码如下:

<script>
    <!--在浏览历史中后退一步-->
    window.history.back();
    <!--在浏览历史中添加一条历史记录,只是附加当前文档链接之后的一些搜索字符串-->
    window.history.pushState("","","?","test");
    window.history.go("http://www.baidu.com");
    <!--在浏览历史中添加一条历史记录,添加新的文档,仍跟当前文档在同一域-->
    window.history.pushState("","","otherpage.html?"+ "test")
    stateObj = {name:"apple",color:"red",size:"small"};
    在浏览历史中添加复杂的状态
    window.history.pushState(stateObj,"");
<script>  

7.使用跨文档消息传递

浏览器通过URL的各个组成部分来判断某个资源的来源,不同来源的脚本间会被加上交互和通信限制,如果两个脚本的协议,主机名和端口号相同,那么它们被认为是拥有同一源。下面的URL都是与http://www.mydomain.com/test1.html进行同源比较:

URL                                             结果
http://www.mydomain.com/other.html              来源相同
https://www.mydomain.com/test2.html             来源不同,协议不一样
http://www.mydomain.com:81/test2.html           来源不同,端口号不同
http://myserver.domain.com/test2.html           来源不同,主机不一样

HTML5通过window里的方法为这类通信提供了一种规范,如下:

名称                              说明                          返回
postMessage(<msg>,<origin>)     给另一个文档发送指定的消息       void

window对象提供了寻找内嵌文档所需的支持,如下:

名称              说明                                          返回
defaultView     返回活动文档的window                           window
frames          返回文档内嵌iframe元素的的window对象数组      window[]
opener          返回打开当前浏览上下文环境的window                window
parent          返回当期文档的父文档                          window
self            返回当前文档的window                           window
top             返回最上层文档                             window
length          返回文档内嵌的iframe元素的数量                  数值
[<index>]       返回指定索引位置内嵌文档的window             window
[<name>]        返回指定名称内嵌文档的window                   window

示例代码:

<h1 id="banana"> </h1>
<p>
    <iframe name="nested" src="http://www.mydomain.com:81/otherpage.html"></iframe>
</p>

<script>
    window["nested"].postMessage("I like apple","http://www.mydomain.com:81")
</script>

otherpage.html的主要内容:
<script>
    window.addEventListener("message",receiveMessage,false);
    function receiveMessage(e) {
        if (e.origin == "http://www.mydomain.com") {
            displayMessage(e.data);
        }
    }
    function displayMessage(msg) {
        document.getElementById("banana").innerHTML = msg;
    }
</script>

在otherpage.html使用addEventListener事件进行监听,浏览器会传递一个MessageEvent对象,其属性如下:

名称                          说明                              返回          
data                        返回别的脚本发送的消息             对象
origin                      返回发送消息脚本的来源             字符串
source                      返回发送消息脚本所关联的窗口      window

8.使用计时器

window对象提供了一个有用的功能是可以设置一次性和循环计数器,这些计时器被用于在预设时间段后执行某个函数,下面进行说明:

名称                                  说明                                          返回
clearInterval(<id>)                 撤销某个时间间隔计时器                         void
clearIimeout(<id>)                  撤销某个超时计时器                               void
setInterval(<function>,<time>)      创建一个计时器,每隔time时间间隔调用指定函数        整数
setTimeout(<function>,<time>)       创建一个计时器,等待time时间后调用指定函数     整数

setTimeout()是等待多少时间后执行某个函数,函数只执行一次,而setInterval()是每隔多长时间执行指定函数,无限重复下去。另外需要说明的是,向这两个函数传递函数名时,不能加括号。例如: window.setInterval(myfunc,20)而不是window.setInterval(myfunc(),20)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值