犀牛——第14章 Window对象

来源:互联网 发布:淘宝鞋子店铺排行榜 编辑:程序博客网 时间:2024/05/29 03:31

14.1  计时器

Window对象的setTimeout()方法用来实现一个函数在指定的毫秒数之后运行。setTimeout()返回一个值,这个值传递给clearTimeout()用于取消这个函数的执行。
setInterval()和setTimeout()一样,只不过这个函数会在指定毫秒数的间隔里重复调用:
setInterval(updateClock,60000);//每60秒调用一次updateClock()
和setTimeout()一样,setInterval()也返回一个值,这个值可以传递给clearInterval(),用于取消后续函数的调用。

14.2 浏览器定位和导航

Window对象的location属性引用的是Location对象,它表示该窗口中当前显示的文档的URL,并定义了方法来使窗口载入新的文档。

14.2.1 解析URL

Location对象的href属性是一个字符串,后者包含URL的完整文本。Location对象的toString()方法返回的href属性的值,因此在会隐式调用toString()的情况下,可以使用location对象代替location.href。
这个对象的其他属性——protocol,host,hostname,port,pathname和search,分别表示URL的各个部分。它们称为“URL分解”属性。
Location对象的hash和search属性比较有趣。hash属性返回URL中的“片段标识符”部分。search属性也类似,它返回的是问号之后的URL,这部分通常是某类型的查询字符串。

14.2.2 载入新的文档

Location对象的assign()方法可以使窗口载入并显示你指定的URL中的文档。replace()方法也类似,但它载入新文档之前会从浏览器历史中把当前文档删除。
Location对象还定义了reload()方法,后者可以让浏览器重新载入当前文档。

使浏览器跳转到新页面的一种更传统的方法是直接把新的URL赋给location属性:
location = "http://www.baidu.com";

纯粹的片段标识符是相对URL的一种类型,它不会让浏览器载入新文档,但只会使它滚动到文档的某个位置。
location="#top";//滚动到id为top的元素位置

location对象的URL分解属性是可写的:
location.search = "?page="+(pagenum+1);//载入下一个页面

14.3 浏览历史

Window对象的history属性引用的是该窗口的History对象。History对象是用来把窗口的浏览历史用文档和文档状态列表的形式表示。History对象的length属性表示浏览历史列表中的元素数量。
History对象的back()和forward()方法与浏览器的“后退”和“前进”按钮一样:它们是浏览器在浏览历史中前后跳转一格。
第三个方法go()接受一个整数参数,可以在历史列表中向前(正参数)或向后(负参数)跳过任意多个页。
history.go(-2);//后退两个历史记录,相当于单击“后退”按钮两次

14.4 浏览器和屏幕信息

14.4.1 Navigator对象

Window对象的navigator属性引用的是包含浏览器厂商和版本信息的Navigator对象。

14.4.2 Screen对象

Window对象的screen属性应用的是Screen对象。它提供有关窗口显示的大小和可用的颜色数量的信息。

14.5 对话框

alert()向用户显示一条消息并等待用户关闭对话框
confirm()也显示一条消息,要求用户单击"确定"或“取消”按钮,并返回一个布尔值。
prompt()同样也显示一条消息,等待用户输入字符串,并返回那个字符串。
showModalDialog()显示一个包含HTML格式的“模态对话框”,可以给它传入参数,以及对话框里返回值。

14.6 错误描述

14.7 作为Window对象属性的文档元素

如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向表示文档元素的HTMLElement对象

14.8 多窗口和窗体

14.8.1 打开和关闭窗口

使用Window对象的open()方法可以打开一个新的浏览器窗口(或标签页,这通常和浏览器的配置选项有关)。有4个可选的参数:
1.在窗口中显示文档的URL
2.新打开的窗口的名字
3.一个以逗号分隔的列表,包含大小和各种属性,用以表明新窗口是如何打开的。
4.只有在第二个参数命名的是一个存在的窗口时才有用。它是一个布尔值,声明了由第一个参数指定的URL是应用替换掉窗口浏览历史的当前条目(true),还是应该在窗口浏览历史中创建一个新的条目(false),后者是默认的设置。

在由window.open()方法创建的窗口中,opener属性引用的是打开它的脚本的Window对象。在其他窗口中,opener为null:
w.opener !== null;  //true,对于由w创建的任意窗口
w.open().opener === w;//true,对于任意窗口w

关闭窗口
方法close()将关闭一个窗口。
w.close();
window.close();

14.8.2 窗体之间的关系

窗体可以用parent属性引用包含它的窗口或窗体的Window对象:
parent.history.back();
如果一个窗口是顶级窗口或标签,而不是窗体,那么其parent属性引用的就是这个窗口本身:
parent = self;//只有顶级窗口才回返回true

有不止一种方法可以引用窗口或窗体的子孙窗体。
窗体是通过<iframe>元素创建的。可以用获取其他元素的方法来获取一个表示<iframe>的元素对象。
var iframeElement = document.getElementById("f1");
<iframe>元素有contentWindow属性,引用该窗体的Window对象,所以此窗体的Window对象就是:
var childFrame = document.getElementById("f1").contentWindow;
可以进行反向操作——从表示窗体的Window对象来获取该窗体的<iframe>元素——用Window对象的frameElement属性。
var elt = document.getElementById("f1");
var win = elt.contentWindow;
win.frameElement === elt //对于帧来说永远是true
window.frameElement === null //对于顶级窗口来说永远是true

每个Window对象都有一个frames属性,它引用自身包含的窗口或和窗体的子窗体。frames属性应用的是类数组对象,并可以通过数字或窗体名进行索引。要引用窗体的第一个子窗口,可以用frames[0]。注意frames[]数组里的元素的window对象,而不是<iframe>元素。

如果指定<iframe>元素的name或id属性,那么除了用数字进行索引之外,还可以用名字来进行索引。例如,名字为“f1”的帧应该用frames["f1"]或frames.f1.

14.8.3 交互窗口中的JavaScript





















0 0
原创粉丝点击