BOM學習筆記(一)開啟新連結四種方式、視窗屬性、定時器
BOM:專門操作瀏覽器視窗的物件
1、window物件充當2個角色:
1. 全域性物件
2. 包含BOM常用物件
3、開啟新連結方式:
在HTML的<a>標籤的學習中,我們知道了target屬性和_self和_blank兩個值的區別
target-->目標視窗的名稱
_self: 自動獲得當前視窗名稱(可返回)
_blank: 建立一個新視窗,隨機生成一個不重複的名字
視窗名:記憶體中同一個視窗名只能開啟一個,後開啟的,會替換先開啟的
(官方解釋:name,聲明瞭新視窗的名稱。這個名稱可以用作標記 <a> 和 <form> 的屬性 target 的值。如果該引數指定了一個已經存在的視窗,那麼 open() 方法就不再建立一個新視窗,而只是返回對指定視窗的引用。)
開啟新連結方式四種方式:
① 在當前視窗開啟新連結,可後退
html: target="_self"
js:[window.]open("url","_self")
② 在當前視窗開啟新連結,禁止後退
js:location.replace("url");//使用新連結,替換舊連結,同時開啟新連線
③ 在新視窗開啟新連結,可同時開多個
html: target="_blank"
js:[window.]open("url","_blank");
④ 在新視窗開啟新連結,只能開啟一個
html: target="自定義視窗名"
js:[window.]open("url","自定義視窗名");
例、HTML: <a href="javascript:fun1()" >在當前視窗開啟,可後退</a><br>
SCRIPT: function fun1(){open("http://tmooc.cn","_self"); }
4、window物件的屬性:視窗大小與定位:
大小:
①innerHeight/Width: 返回視窗的文件顯示區的高度/寬度(只讀屬性)
outerHeight/Width: 返回視窗的外部高度/寬度(只讀屬性)
②screen.height/width: 桌面完整解析度寬高
screen.availHeight/availWidth: 去掉工作列後剩餘解析度的寬高
調整大小:window.resizeTo(width,height)接受瀏覽器視窗新寬度和新高度
window.resizeBy(width,height)接受新視窗與原視窗的寬度和高度之差
位置:
①pageYOffset/pageXOffset:設定或返回當前頁面相對於視窗顯示區左上角的 X/Y 位置。
② 視窗左上角x座標:window.screenLeft||window.screenX;
y座標:window.screenTop||window.screenY;
③將視窗移動到指定座標:window.moveTo(x,y)
④事件發生時,滑鼠相對於整個螢幕的座標:event.screenX|screenY
5、定時器:
setInterval() :週期性定時器,按照指定的週期(以毫秒計)來呼叫函式或計算表示式。方法會不停地呼叫函式,直到 clearInterval() 被呼叫或視窗被關閉。
setTimeout() :一次性定時器,在指定的毫秒數後呼叫函式或計算表示式。可以用setTimeout()實現setInterval()功能, 在一次性定時器的結尾,每次都重新啟動一個一次性定時器就達到一直執行的效果了
實現一次性/週期性定時器的三個步驟
①動畫的每一步要執行的任務(函式物件)
function step(){
每一步要做的事情
/*一次性定時器需要根據條件判斷是否有必要繼續啟動下一個定時器*/
}
②將一步的任務放入定時器,反覆呼叫,並獲得儲存定時器的編號
一次性:timer=setTimeout(step,間隔毫秒數|等待毫秒數)
週期性:timer=setInterval (step,間隔毫秒數|等待毫秒數)
③清理定時器(必須用全域性變數,臨時儲存定時器的編號)
clearTimeout(timer)
停止正在等待的定時器
例:
<!DOCTYPE html>
<html>
<head>
<title>定時器</title>
</head>
<body>
<html>
<body>
<div id="clock" style="height:30px"></div>
<button onclick="window.clearInterval(int)">停止</button><!--清理定時器-->
<script type="text/javascript">
var int=window.setInterval("clock()",1000);
/*第一個引數是要定時執行的函式,第二個是間隔時間(ms),執行完獲得一個返回值,用來停止定時器的*/
function clock(){
var d=new Date(); //獲得當前時間
var t=d.toLocaleTimeString();//將時間格式化
document.getElementById("clock").innerHTML=t;//將格式化後的時間寫入div
/*如果使用setTimeout()方法,需要把上邊setInterval改為setTimeout,並在此處多一步var int=setTimeout("clock()",1000); */
}
</script>
</body>
</html>