编辑
2024-04-24
teach
00

目录

打开和关闭窗口
改变窗口大小
改变窗口位置

浏览器对象模型(Browser Object Model,BOM)主要用于访问和操纵浏览器窗口。BOM主要是由一系列的浏览器对象组成的。这一系列的浏览器对象被称为BOM对象体系如图7-2所示。BOM主要包括Window、Document、History、Location、Navigator、Screen等对象,主要用于操纵浏览器窗口的行为和特征。本任务将详细介绍BOM对象。

image.png

image.png

在BOM对象体系中,Window位于顶层,可以使用标识符window直接访问下层对象,如下代码所示。 window.document.write(“hello!”); 因为Window是顶层对象,在平时写代码时,window是可以省略的,如上述代码可以直接写成如下语句。 document.write(“hello!”);

Window对象用来表示浏览器中一个打开的窗口。Window对象的属性如表所示。

image.png

Window对象的方法如表所示:

image.png setInterval() 方法指按照指定的周期(以ms计)来循环调用函数或计算表达式。 定时器的语法格式如下。 setInterval(code/function, milliseconds); 其中code/function是指要执行一段JavaScript代码或者一个函数;milliseconds是指 周期性执行或调用code/function的时间间隔,以ms计。

执行一段JavaScript代码实现定时的代码如下。 setInterval(“alert(‘hello’)”,2000); 这表示每隔2s弹出“hello”,这里通过代码字符串的方式实现,也可以通过自定义函数的方式实现,具体如下。 function FunHello(){ alert("hello"); } setInterval(FunHello,2000);

通过执行自定义函数的方式来设置定时器时,函数可以带参数,然后将参数输出。定时器在调用带参数的函数时,需要使用JavaScript代码字符串来调用 。 function alertFunc(str) { alert(str); } setInterval("alertFunc('hello')", 2000); 如果想要在定时器启动后取消它,我们可以将setInterval()方法的返回值传递给clearInterval()方法,具体如下。 var timerId = setInterval(FunHello, 2000); clearInterval(timerId);

延时器setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。

延时器的语法格式如下。 setTimeout(code/function, milliseconds); 其中code/function是指要执行一段JavaScript代码或者一个函数,milliseconds是指延迟的时间,以ms计。

执行一段JavaScript代码实现延时的代码如下。 setTimeout(“alert(‘hello’)”,2000); 这段代码是指2s后弹出“hello”,这里通过代码字符串的方式实现,也可以通过自定义函数的方式实现,具体如下。 function FunHello(){ alert("hello"); } setTimeout(FunHello,2000);

通过执行自定义函数的方式来设置延时器时,函数可以带参数,然后将参数输出。延时器在调用带参数的函数时,需要使用JavaScript代码字符串来调用。 function alertFunc(str) { alert(str); } setTimeout("alertFunc('hello')", 2000); 如果想取消延时器,我们可以将setTimeout()方法的返回值传递给clearTimeout()方法,具体如下。 var timerId = setTimeout(FunHello, 2000); clearTimeout(timerId);

image.png

image.png

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <p id="p1"><a href="javascript:startShow()">显示时钟</a></p> <p><a href="javascript:stopShow()">取消时钟</a></p> <script type="text/javascript"> var timerID; function showTime(){ var now = new Date(); var p1 = document.querySelector("#p1"); p1.innerHTML = now.toLocaleTimeString(); console.log(now); console.log(now.toLocaleTimeString()); } function startShow(){ timerID = setInterval(showTime,1000); } function stopShow(){ clearInterval(timerID); } </script> </body> </html>

image.png

打开和关闭窗口

open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口,具体语法格式: window.open(URL,name,specs) 其中URL是指要打开的指定页面的URL,如果没有指定URL,则打开一个新的空白窗 口;name是指target属性或窗口的名称;specs是指窗口的特征列表,通过逗号分隔,具体如表所示。

image.png

close() 方法用于关闭浏览器窗口,除了关闭主窗口外,还可以关闭新创建的窗口,具体用法如下: window.close(); myWindow.close(); myWindow.close()表示关闭myWindow窗口,而myWindow是通过open()方法创建的窗口,也就是前面open()的返回值。

image.png

image.png

image.png

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <p><a href="javascript:openWin()">打开新窗口</a></p> <p><a href="javascript:closeWin()">关闭新窗口</a></p> <p><a href="javascript:open()">关闭窗口</a></p> <script> var newWin = null; function openWin(){ newWin = open("http://www.liufeisheng.cn","newWin", "width=400,height=200,left=120,top=110"); } function closeWin(){ if(newWin!=null){ newWin.close(); newWin=null; }else{ alert("没有要关闭的窗口"); } } </script> </body> </html>

在演示代码中,openWin()函数中的open()的参数分别为要打开窗口的URL,新窗口的名字,新窗口的宽度、高度,左边距和上边距等。javascript

()是通过超链接调用函数的方法。closeWin()方法通过使用openWin()方法的返回值来调用。

image.png

改变窗口大小

resizeTo(x,y)方法用来改变窗口的大小,x和y代表改变后的宽度和高度,单位是px;而resizeBy(x,y)方法也用来改变窗口的大小,但是x和y代表在原来的基础上扩大或者缩小的数值,为正数表示扩大,为负数表示缩小,具体用法如下所示: window.resizeTo(400,400);//窗口大小调整为400*400 window.resizeBy(-500,-500);//窗口大小在原来基础上各缩小500

所有主要浏览器都支持 resizeTo() 方法,但是从火狐浏览器7开始,不能改变浏览器窗口的大小了,要依据下面的规则。  不能设置那些不是通过window.open()创建的窗口大小。  当一个窗口里面含有一个以上的 Tab 时,无法设置窗口的大小。 除此之外,如果我们想获取浏览器窗口本身的大小,可以通过outerWidth和outerHeight属性来获取,还可以通过innerWidth和innerHeight属性来获取浏览器窗口减去浏览器自身边框及菜单栏、地址栏、状态栏等的宽度/高度。

image.png

image.png

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>更改窗口大小</title> </head> <body> <p><a href="javascript:openWin()">打开新窗口</a></p> <p><a href="javascript:resizeWin()">改变窗口大小</a></p> <p><a href="javascript:resizeX()">水平缩小100px</a></p> <p><a href="javascript:showSize()">显示目前大小</a></p> <script> var newWin = null; function openWin(){ newWin = open("","","width=400,height=100,left=120,top=110"); newWin.document.write(`初始大小:<br/> outerWidth:${newWin.outerWidth}\n outerHeight:${newWin.outerHeight}<br /> innerWidth:${newWin.innerWidth}\n innerHeight:${newWin.innerHeight}<br />`); } function resizeWin(){ newWin.resizeTo(600,300); newWin.focus(); newWin.document.write(`第一次改变大小:<br/> outerWidth:${newWin.outerWidth}\n outerHeight:${newWin.outerHeight}<br /> innerWidth:${newWin.innerWidth}\n innerHeight:${newWin.innerHeight}<br />`); } function resizeX(){ newWin.resizeBy(-100,0); newWin.focus(); newWin.document.write(`第二次改变大小:<br/> outerWidth:${newWin.outerWidth}\n outerHeight:${newWin.outerHeight}<br /> innerWidth:${newWin.innerWidth}\n innerHeight:${newWin.innerHeight}<br />`); } function showSize(){ alert(` outerWidth:${newWin.outerWidth}\n outerHeight:${newWin.outerHeight}<br /> innerWidth:${newWin.innerWidth}\n innerHeight:${newWin.innerHeight}<br />`); newWin.focus(); } </script> </body> </html>

改变窗口位置

MoveTo(x,y)方法用来移动窗口,x和y代表距离屏幕左上角的水平和垂直距离,单位是px;而MoveBy(x,y)方法也用来移动窗口,但是x代表在原来的基础上向左移动(x<0)或者向右移动(x>0)的距离,具体用法如下所示: window.moveTo(100,100);//窗口移动到(100,100) window.moveBy(10,-50);//窗口在水平方向上向右移动10像素,向上移动50像素

除此之外,如果我们想获取窗口当前位置,可以通过screenLeft和screenTop属性来获取,这表示窗口相对于屏幕左边和上边的位置。screenX和screenY属性也提供相同的位置。

image.png

image.png

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <p><a href="javascript:openWin()">打开新窗口</a></p> <p><a href="javascript:moveWin()">改变窗口位置</a></p> <p><a href="javascript:moveY()">向上移动100px</a></p> <p><a href="javascript:showPos()">显示目前位置</a></p> <script> var newWin = null; function openWin(){ newWin = open("","","width=400,height=100,left=120,top=110"); newWin.document.write(`初始位置:<br/> Left:${newWin.screenLeft}\n Top:${newWin.screenTop}<br />`); } function moveWin(){ newWin.moveTo(100,100); newWin.focus(); newWin.document.write(`第一次改变位置:<br/> Left:${newWin.screenLeft}\n Top:${newWin.screenTop}<br />`); } function moveY(){ newWin.moveBy(0,-100); newWin.focus(); newWin.document.write(`第二次改变位置:<br/> Left:${newWin.screenLeft}\n Top:${newWin.screenTop}<br />`); } function showPos(){ alert(`当前位置:<br/> Left:${newWin.screenLeft}\n Top:${newWin.screenTop}<br />`); } </script> </body> </html>

本文作者:liufeisheng

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!