1. 程式人生 > >JavaScript小工具13(BOM)

JavaScript小工具13(BOM)

實用的 JavaScript 方案(涵蓋所有瀏覽器)         顯示瀏覽器視窗的高度和寬度

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>

<p id="demo"></p>
<script>
var w=window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
var h=window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;
x=document.getElementById("demo");
x.innerHTML="瀏覽器window寬度: " + w + ", 高度: " + h + "。"
</script>

</body>
</html>

返回您的螢幕的可用寬度:

<script>
document.write("可用寬度: " + screen.availWidth);
</script>

返回您的螢幕的可用高度:

<script>
document.write("可用高度: " + screen.availHeight);
</script>

Window Location Assign

location.assign() 方法載入新的文件。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<head>
<script>
function newDoc(){
	window.location.assign("http://www.w3cschool.cc")
}
</script>
</head>
<body>

<input type="button" value="載入新文件" onclick="newDoc()">

</body>
</html>

在頁面上建立後退按鈕:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<head>
<script>
    function goBack()
    {
        window.history.back()
    }
</script>
</head>
<body>
 
<input type="button" value="Back" onclick="goBack()">
 
</body>
</html>

在頁面上建立一個向前的按鈕:

<script>
function goForward()
{
    window.history.forward()
}
</script>

Window Navigator

window.navigator 物件在編寫時可不使用 window 這個字首。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>
	
<div id="example"></div>
<script>
txt = "<p>瀏覽器代號: " + navigator.appCodeName + "</p>";
txt+= "<p>瀏覽器名稱: " + navigator.appName + "</p>";
txt+= "<p>瀏覽器版本: " + navigator.appVersion + "</p>";
txt+= "<p>啟用Cookies: " + navigator.cookieEnabled + "</p>";
txt+= "<p>硬體平臺: " + navigator.platform + "</p>";
txt+= "<p>使用者代理: " + navigator.userAgent + "</p>";
txt+= "<p>使用者代理語言: " + navigator.systemLanguage + "</p>";
document.getElementById("example").innerHTML=txt;
</script>

</body>
</html>

警告!!!

來自 navigator 物件的資訊具有誤導性,不應該被用於檢測瀏覽器版本,這是因為:

  • navigator 資料可被瀏覽器使用者更改
  • 一些瀏覽器對測試站點會識別錯誤
  • 瀏覽器無法報告晚於瀏覽器釋出的新作業系統

瀏覽器檢測

由於 navigator 可誤導瀏覽器檢測,使用物件檢測可用來嗅探不同的瀏覽器。

由於不同的瀏覽器支援不同的物件,您可以使用物件來檢測瀏覽器。例如,由於只有 Opera 支援屬性 "window.opera",您可以據此識別出 Opera。

例子:if (window.opera) {...some action...}

確認框

確認框通常用於驗證是否接受使用者操作。

當確認卡彈出時,使用者可以點選 "確認" 或者 "取消" 來確定使用者操作。

當你點選 "確認", 確認框返回 true, 如果點選 "取消", 確認框返回 false。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>

<p>點選按鈕,顯示確認框。</p>
<button onclick="myFunction()">點我</button>
<p id="demo"></p>
<script>
function myFunction(){
	var x;
	var r=confirm("按下按鈕!");
	if (r==true){
		x="你按下了\"確定\"按鈕!";
	}
	else{
		x="你按下了\"取消\"按鈕!";
	}
	document.getElementById("demo").innerHTML=x;
}
</script>

</body>
</html>

提示框

提示框經常用於提示使用者在進入頁面前輸入某個值。

當提示框出現後,使用者需要輸入某個值,然後點選確認或取消按鈕才能繼續操縱。

如果使用者點選確認,那麼返回值為輸入的值。如果使用者點選取消,那麼返回值為 null。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>

<p>點選按鈕檢視輸入的對話方塊。</p>
<button onclick="myFunction()">點我</button>
<p id="demo"></p>
<script>
function myFunction(){
	var x;
	var person=prompt("請輸入你的名字","Harry Potter");
	if (person!=null && person!=""){
	    x="你好 " + person + "! 今天感覺如何?";
	    document.getElementById("demo").innerHTML=x;
	}
}
</script>

</body>
</html>

換行

彈窗使用 反斜槓 + "n"(\n) 來設定換行。

例項

alert("Hello\nHow are you?");

 

顯示當前時間。 setInterval() 方法設定每秒鐘執行一次程式碼,就是手錶一樣。

clearInterval() 方法用於停止 setInterval() 方法執行的函式程式碼。

語法

window.clearInterval(intervalVariable)

window.clearInterval() 方法可以不使用window字首,直接使用函式clearInterval()

要使用 clearInterval() 方法, 在建立計時方法時你必須使用全域性變數:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>

<p>頁面上顯示時鐘:</p>
<p id="demo"></p>
<button onclick="myStopFunction()">停止</button>
<script>
var myVar=setInterval(function(){myTimer()},1000);
function myTimer(){
	var d=new Date();
	var t=d.toLocaleTimeString();
	document.getElementById("demo").innerHTML=t;
}
function myStopFunction(){
	clearInterval(myVar);
}
</script>

</body>
</html>

setTimeout() 方法

語法

myVar= window.setTimeout("javascript function", milliseconds);

setTimeout() 方法會返回某個值。在上面的語句中,值被儲存在名為 myVar 的變數中。假如你希望取消這個 setTimeout(),你可以使用這個變數名來指定它。

setTimeout() 的第一個引數是含有 JavaScript 語句的字串。這個語句可能諸如 "alert('5 seconds!')",或者對函式的呼叫,諸如 alertMsg。

第二個引數指示從當前起多少毫秒後執行第一個引數。

如何停止執行?

clearTimeout() 方法用於停止執行setTimeout()方法的函式程式碼。

語法

window.clearTimeout(timeoutVariable)

window.clearTimeout() 方法可以不使用window 字首。

要使用clearTimeout() 方法, 你必須在建立超時方法中(setTimeout)使用全域性變數:

myVar=setTimeout("javascript function",milliseconds);

如果函式還未被執行,你可以使用 clearTimeout() 方法來停止執行函式程式碼。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>

<p>點選第一個按鈕等待3秒後出現"Hello"彈框。</p>
<p>點選第二個按鈕來阻止第一個函式執行。(你必須在3秒之前點選它)。</p>
<button onclick="myFunction()">點我</button>
<button onclick="myStopFunction()">停止彈框</button>
<script>
var myVar;
function myFunction(){
	myVar=setTimeout(function(){alert("Hello")},3000);
}
function myStopFunction(){
	clearTimeout(myVar);
}
</script>

</body>
</html>

點選按鈕,輸出的文字將告訴你2秒,4秒,6秒已經過去了。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<head>
<script>
function timedText(){
	var x=document.getElementById('txt');
	var t1=setTimeout(function(){x.value="2 秒"},2000);
	var t2=setTimeout(function(){x.value="4 秒"},4000);
	var t3=setTimeout(function(){x.value="6 秒"},6000);
}
</script>
</head>
<body>
	
<form>
<input type="button" value="顯示文字時間!" onclick="timedText()" />
<input type="text" id="txt" />
</form>
<p>點選上面的按鈕,輸出的文字將告訴你2秒,4秒,6秒已經過去了。</p>
</body>

</html>

JavaScript Cookie 例項

在以下例項中,我們將建立 cookie 來儲存訪問者名稱。

首先,訪問者訪問 web 頁面, 他將被要求填寫自己的名字。該名字會儲存在 cookie 中。

訪問者下一次訪問頁面時,他會看到一個歡迎的訊息。

在這個例項中我們會建立 3 個 JavaScript 函式:

  1. 設定 cookie 值的函式
  2. 獲取 cookie 值的函式
  3. 檢測 cookie 值的函式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<head>
<script>

/*     設定 cookie 值的函式
函式解析:

以下的函式引數中,cookie 的名稱為 cname,cookie 的值為 cvalue,並設定了 cookie 的過期時間 expires。

該函式設定了 cookie 名、cookie 值、cookie過期時間。
*/
function setCookie(cname,cvalue,exdays){
	var d = new Date();
	d.setTime(d.getTime()+(exdays*24*60*60*1000));
	var expires = "expires="+d.toGMTString();
	document.cookie = cname+"="+cvalue+"; "+expires;
}

/*
獲取 cookie 值的函式
建立一個函式使用者返回指定 cookie 的值:

函式解析:

cookie 名的引數為 cname。

建立一個文字變數用於檢索指定 cookie :cname + "="。

使用分號來分割 document.cookie 字串,並將分割後的字串陣列賦值給 ca (ca = document.cookie.split(';'))。

迴圈 ca 陣列 (i=0;i<ca.length;i++),然後讀取陣列中的每個值,並去除前後空格 (c=ca[i].trim())。

如果找到 cookie(c.indexOf(name) == 0),返回 cookie 的值 (c.substring(name.length,c.length)。

如果沒有找到 cookie, 返回 ""。
*/
function getCookie(cname){
	var name = cname + "=";
	var ca = document.cookie.split(';');
	for(var i=0; i<ca.length; i++) {
		var c = ca[i].trim();
		if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }
	}
	return "";
}

/*
檢測 cookie 值的函式
最後,我們可以建立一個檢測 cookie 是否建立的函式。

如果設定了 cookie,將顯示一個問候資訊。

如果沒有設定 cookie,將會顯示一個彈窗用於詢問訪問者的名字,並呼叫 setCookie 函式將訪問者的名字儲存 365 天:
*/
function checkCookie(){
	var user=getCookie("username");
	if (user!=""){
		alert("歡迎 " + user + " 再次訪問");
	}
	else {
		user = prompt("請輸入你的名字:","");
  		if (user!="" && user!=null){
    		setCookie("username",user,30);
    	}
	}
}
</script>
</head>
	
<body onload="checkCookie()"></body>
	
</html>