关闭窗口
既然window对象有打开窗口的函数,那肯定少不了关闭窗口的函数,我们可以通过 window对象.close()
的方式,关闭一个窗口,大多数的浏览器只允许关闭由自己的js代码打开的窗口
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><button class="btn1">打开新窗口</button><button class="btn2">关闭新打开的窗口</button><script> let btn1 = document.querySelector('.btn1') let btn2 = document.querySelector('.btn2') btn1.onclick = function () { //将新打开的窗口的window对象返回给变量new_window new_window = window.open() } btn2.onclick = function () { //调用新打开窗口的window对象的close()方法 new_window.close() }</script></body></html>
动画展示
对话框
Window对象还提供了3个方法来向用户显示简单的对话框,他们分别是:alert()
、confirm()
、prompt()
alert()
该方法传入一个字符串作为参数。执行时,在浏览器弹出一个消息提醒框,字符串会作为内容显示在框内。
执行了该方法以后,会阻碍后面的js代码的运行,只有等用户手动关闭了该弹框以后,后面的js代码才会继续执行。
这个是Window对象的方法,可以这样调用window.alert()
,同时我们也可以省略window
,直接这样写alert()
alert('第一次弹出弹框')window.alert('第二次弹出弹框')
动画展示
confirm()
该方法传入一个字符串作为参数。执行时,弹出一个消息框,字符串作为内容展示在框内,并且有 “确认” 和 “取消” 两个按钮,当点击 “确认” 时,返回true;当点击 “取消” 时,返回false。
执行了该方法以后,会阻碍后面的js代码的运行,只有等用户点击了某个按钮以后,后面的js代码才会继续执行。
调用该方法,window
可以省略,即可以这样调用 confirm()
let ret1 = confirm('你确定吗?')console.log(ret1, 1) let ret2 = window.confirm('真的确定吗?')console.log(ret2, 2)
动画展示
prompt()
该方法传入一个字符串作为参数。执行时,弹出一个框,字符串作为内容展示在框内,并且框内还有一个文本框,用户可以在文本框内输入内容。同时也有 “确定” 和 “取消” 两个按钮,若点 “确定”,则返回用户文本框内输入的字符串;若点 “取消”,则返回null
执行了该方法以后,会阻碍后面的js代码的运行,只有等用户点击了某个按钮以后,后面的js代码才会继续执行。
调用该方法,window
也可以省略,即可以这样调用 prompt()
let ret1 = prompt('你是谁?')console.log(ret1, 1) let ret2 = window.prompt('你吃饭了吗?')console.log(ret2, 2)
动画展示
其实除了这三种简单的对话框外,还有一种复杂的对话框,叫做模态对话框,调用方法为showModalDialog()
,它的实质就是将另一个HTML文件作为弹框显示在页面中,因为比较复杂,用到的也不多,我就不多做讲解了,感兴趣的可以去网上自己看下文档。
Window对象的属性
要是说到Window对象的属性的话,那可就多了,我们先来讲一个常用的,例如opener
,该属性返回一个window对象,表示该窗口是由谁打开的。若不是被别的窗口打开,则返回null;若是被别的窗口打开,则返回那个窗口的window对象。刚刚我们上面将了window对象的open()方法,并且知道了open()方法会返回新打开窗口的window对象。接下来我们来看一下例子
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><button class="btn1">打开新窗口</button><button class="btn2">控制新打开的窗口</button><script> let btn1 = document.querySelector('.btn1') let btn2 = document.querySelector('.btn2') let new_window = null //弹出弹框,展示当前窗口的opener属性 alert(window.opener) btn1.onclick = function () { new_window = window.open() } btn2.onclick = function () { //控制新窗口弹出弹框,判断新打开窗口的opener是否为当前窗口的window对象 new_window.alert(new_window.opener === window) }</script></body></html>
动画展示
还有更多的window对象属性,其实都是通过调用了别的对象的属性来引用的,因为window对象表示的整个窗口,所以window对象是最大的一个对象,在他里面还有很多别的对象,我们可以通过window.别的浏览器内置对象
来引用别的对象属性。举个例子先location.href
就是调用了Location对象,同时我们也可以这样调用Location对象 window.location
,这两者相等。
感谢观看~