BOM概述:
Browser Object Model - 浏览器对象模型 - 专为操作浏览器准备的一些对象,没有任何标准,不由W3C制定规则,存在很大的兼容性问题,相对DOM使用较少。
Window对象: 在浏览器重扮演了两个角色:
1、代替了Global,充当全局对象;
2、代指当前窗口本身;
带来了网页新的打开方式:
1、当前网页打开,可以后退:
HTML:<a href="url" target="_self">内容</a>
JS:open("url","_self")
2、当前网页打开,禁止后退:
HTML:做不到;
JS:location.replace("url") -- 替换掉当前页面,但是不会保存历史记录;
因为history的存在,里面保存着当前页面的历史记录,当前窗口有了历史记录才能后退;
而location里面保存着当前页面正在打开的url网址,它提供了.replace这个方法;
3、新网页打开,打开多个:
HTML:<a href="url" target="_blank">内容</a>
JS:open("url","_blank")
4、新网页打开,只能打开一个:
HTML:<a href="url" target="自定义name">内容</a>
JS:open("url","自定义name")
其实每个窗口的底层都有一个name,_self指向的当前自己的name,_blank始终会得到新的name,
而如果自定义name浏览器就会发现也就打开过这个窗口了,再次打开就会把这个窗口替换掉。
拓展:a标签的作用:
1、跳转页面
2、锚点
3、下载:<a href="文件名.exe/zip/rar">内容</a>
4、打开:<a href="文件名.txt/图片后缀">内容</a>
5、直接运行JS:<a href="javascript代码段">内容</a>
属性和方法
打开新窗口:var 新窗口=open("url","自定义name/target","width,height,left,top")
特殊:没有第三个参数时,新窗口回合浏览器融为一体;
有第三个参数时,新窗口会脱离浏览器独立存在,甚至可以用变量保存起来;
关闭窗口:window/新窗口.close();
移动窗口:新窗口.moveTo(left,top);
修改窗口:新窗口.resizeTo(width,height);
获取屏幕的大小:screen.width/height
获取浏览器完整的大小:outerWidth/Height
获取文档显示区域的大小:inner.width/height
扩展:
event对象可以获取鼠标位置:2步
1、在事件处理函数中的第一个形参会自动获取到事件对象event;
2、获取鼠标的位置:
获取相对于屏幕的坐标位置:screenX/Y
获取相对于文档显示区域的坐标位置:e.clientX/Y
获取相对于网页的位置:e.pageX/Y
定时器:
等待一段时间才会执行的代码,可能只执行一次也可能执行多次;
两种:
1、周期性定时器:
开启:var timer=setInterval(回调函数,延时)
关闭:clearInterval(timer)
2、一次性定时器:
开启:var timer=setTimeout(回调函数,延时)
关闭:clearTimeout(timer)
特殊点:不管哪种定时器的底层都是一样的,两者甚至可以互换;
一次性 <=> 周期性