1. 程式人生 > >JavaScript中的window物件 (狀態列動態文字例項)

JavaScript中的window物件 (狀態列動態文字例項)

window物件在js中經常會提到, 在具體瞭解之前經常會感覺疑惑,

window到底是個啥, 這篇就是用來介紹window給和我一樣的菜鳥

Window - 瀏覽器物件模型

為什麼說瀏覽器物件呢?

因為window物件它表示瀏覽器窗口或一個框架, 與windows作業系統沒啥關係

window物件是整個JavaScript指令碼執行的頂層物件

所有 JavaScript 全域性物件、函式以及變數均自動成為 window 物件的成員

全域性變數是 window 物件的屬性

全域性函式是 window 物件的方法

如果文件包含框架(frame 或 iframe 標籤),瀏覽器會為 HTML 文件建立一個 window 物件,併為每個框架建立一個額外的 window 物件。

甚至 HTML DOM 的 document 也是 window 物件的屬性之一

window.document.getElementById("header");

上下的語句相同

document.getElementById("header");

也就是說js書寫時 window關鍵字是可以省略的

 

Window 物件屬性

屬性 描述
closed 返回視窗是否已被關閉。
defaultStatus 設定或返回視窗狀態列中的預設文字。
document 對 Document 物件的只讀引用。請參閱 Document 物件
history 對 History 物件的只讀引用。請引數 History 物件
innerheight 返回視窗的文件顯示區的高度。
innerwidth 返回視窗的文件顯示區的寬度。
length 設定或返回視窗中的框架數量。
location 用於視窗或框架的 Location 物件。請參閱 
Location 物件
name 設定或返回視窗的名稱。
Navigator 對 Navigator 物件的只讀引用。請引數 Navigator 物件
opener 返回對建立此視窗的視窗的引用。
outerheight 返回視窗的外部高度。
outerwidth 返回視窗的外部寬度。
pageXOffset 設定或返回當前頁面相對於視窗顯示區左上角的 X 位置。
pageYOffset 設定或返回當前頁面相對於視窗顯示區左上角的 Y 位置。
parent 返回父視窗。
Screen 對 Screen 物件的只讀引用。請引數 Screen 物件
self 返回對當前視窗的引用。等價於 Window 屬性。
status 設定視窗狀態列的文字。
top 返回最頂層的先輩視窗。
window window 屬性等價於 self 屬性,它包含了對視窗自身的引用。
  • screenLeft
  • screenTop
  • screenX
  • screenY
只讀整數。聲明瞭視窗的左上角在螢幕上的的 x 座標和 y 座標。IE、Safari 和 Opera 支援 screenLeft 和 screenTop,而 Firefox 和 Safari 支援 screenX 和 screenY。

Window 物件方法

方法 描述
alert() 顯示帶有一段訊息和一個確認按鈕的警告框。
blur() 把鍵盤焦點從頂層視窗移開。
clearInterval() 取消由 setInterval() 設定的 timeout。
clearTimeout() 取消由 setTimeout() 方法設定的 timeout。
close() 關閉瀏覽器視窗。
confirm() 顯示帶有一段訊息以及確認按鈕和取消按鈕的對話方塊。
createPopup() 建立一個 pop-up 視窗。
focus() 把鍵盤焦點給予一個視窗。
moveBy() 可相對視窗的當前座標把它移動指定的畫素。
moveTo() 把視窗的左上角移動到一個指定的座標。
open() 開啟一個新的瀏覽器視窗或查詢一個已命名的視窗。
print() 列印當前視窗的內容。
prompt() 顯示可提示使用者輸入的對話方塊。
resizeBy() 按照指定的畫素調整視窗的大小。
resizeTo() 把視窗的大小調整到指定的寬度和高度。
scrollBy() 按照指定的畫素值來滾動內容。
scrollTo() 把內容滾動到指定的座標。
setInterval() 按照指定的週期(以毫秒計)來呼叫函式或計算表示式。
setTimeout() 在指定的毫秒數後呼叫函式或計算表示式。

 

status屬性可以改變狀態列文字, 配合定時器我們可以做出一個狀態列的動態文字效果如下:

字依次從右邊向左靠的動態效果,可惜現在的瀏覽器出於空間考慮都砍掉了狀態列, 就是下方的顯示狀態的細條

上程式碼:

<!DOCTYPE html>
<html>
<head>
	<meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" />
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title> 狀態列的動畫文字 </title>
</head>
<body onload="stack();">
	<script type="text/javascript">
		// 自定義的狀態文字
		var statusText = "自定義的動畫狀態列文字...";
		var out = "";
		// 動畫間隔時間
		var pause = 25;
		// 動畫寬度
		var animateWidth = 20;
		var position = animateWidth;
		var i = 0 ;
		var stack = function()
		{
			if (statusText.charAt(i) != " ")
			{
				out = "";
				// 將0到i-1個字元拼成輸出字串
				for (var j = 0; j < i; j++)
				{
					out += statusText.charAt(j);
				}
				// 增加一定寬度空格
				for (j = i; j < position; j++)
				{
					out += " ";
				}
				// 將第i個字元新增到輸出字串裡去
				out += statusText.charAt(i);
				for (j = position; j < animateWidth; j++)
				{
					out += " ";
				}
				window.status = out;
				// 如果後出來的字緊靠了前面字串
				if (position == i)
				{
					animateWidth++;
					position = animateWidth;
					// i加1,對應為多出現一個字元
					i++;
				}
				else
				{
					position--;
				}
			}
			else
			{
				i++
			}
			if (i < statusText.length)
			{
				setTimeout("stack()",pause);
			}
		}
	</script>
</body>
</html>

 

 

關於兩個定時器我會在另一篇部落格介紹, 有不明白區別的同學可以看一下哦

 

有參考W3school內容