以下是正文。
BOM的介紹
JavaScript的組成
JavaScript基礎分為三個部分:
-
ECMAScript:JavaScript的語法標准。包括變量、表達式、運算符、函數、if語句、for語句等。
-
DOM:文檔對象模型,操作網頁上的元素的API。比如讓盒子移動、變色、輪播圖等。
-
BOM:瀏覽器對象模型,操作瀏覽器部分功能的API。比如讓瀏覽器自動滾動。
什么是BOM
BOM:Browser Object Model,瀏覽器對象模型。
BOM的結構圖:
從上圖也可以看出:
-
window對象是BOM的頂層(核心)對象,所有對象都是通過它延伸出來的,也可以稱為window的子對象。
-
DOM越是BOM的一部分。
window對象:
-
window對象是JavaScript中的頂級對象。
-
全局變量、自定義函數也是window對象的屬性和方法。
-
window對象下的屬性和方法調用時,可以省略window。
下面講一下 BOM 的常見內置方法和內置對象。
彈出系統對話框
比如說,alert(1)
是window.alert(1)
的簡寫,因為它是window的子方法。
系統對話框有三種:
alert(); //不同瀏覽器中的外觀是不一樣的
confirm(); //兼容不好
prompt(); //不推薦使用
打開窗口、關閉窗口
1、打開窗口:
window.open(url,target,param)
參數解釋:
-
url:要打開的地址。
-
target:新窗口的位置。可以是:
_blank
、_self
、_parent
父框架。 -
param:新窗口的一些設置。
-
返回值:新窗口的句柄。
param這個參數,可以填各種各樣的參數(),比如:
-
name:新窗口的名稱,可以為空
-
featurse:屬性控制字符串,在此控制窗口的各種屬性,屬性之間以逗號隔開。
-
fullscreen= { yes/no/1/0 } 是否全屏,默認no
-
channelmode= { yes/no/1/0 } 是否顯示頻道欄,默認no
-
toolbar= { yes/no/1/0 } 是否顯示工具條,默認no
-
location= { yes/no/1/0 } 是否顯示地址欄,默認no。(有的瀏覽器不一定支持)
-
directories = { yes/no/1/0 } 是否顯示轉向按鈕,默認no
-
status= { yes/no/1/0 } 是否顯示窗口狀態條,默認no
-
menubar= { yes/no/1/0 } 是否顯示菜單,默認no
-
scrollbars= { yes/no/1/0 } 是否顯示滾動條,默認yes
-
resizable= { yes/no/1/0 } 是否窗口可調整大小,默認no
-
width=number 窗口寬度(像素單位)
-
height=number 窗口高度(像素單位)
-
top=number 窗口離屏幕頂部距離(像素單位)
-
left=number 窗口離屏幕左邊距離(像素單位)
各個參數之間用逗號隔開就行,但我們最好是把它們統一放到json里。
2、關閉窗口:window.close()
(1)和(2)的代碼舉例:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<a href="javascript:;">點擊我打開一個新的頁面</a>
<a href="javascript:;">點擊我關閉本頁面</a>
<script>
//新窗口 = window.open(地址,是否開新窗口,新窗口的各種參數);
var a1 = document.getElementsByTagName("a")[0];
var a2 = document.getElementsByTagName("a")[1];
a1.onclick = function () {
//舉例1: window.open("http://www.jd.com","_blank");
var json = {
"name": "helloworld",
"fullscreen": "no",
"location": "no",
"width": "100px",
"height": "100px",
"top": "100px",
"left": "100px"
};
window.open("http://www.baidu.com", "_blank", json); //舉例2
}
//關閉本頁面
a2.onclick = function () {
window.close();
}
</script>
</body>
</html>
3、新窗口相關:
-
新窗口.moveTo(5,5)
-
新窗口.moveBy()
-
新窗口.resizeTo()
-
window.resizeBy()
代碼舉例:
var newWin = window.open("demo.html", "_blank", json);
newWin.moveTo(500, 500);
location對象
window.location
可以簡寫成location。location相當於瀏覽器地址欄,可以將url解析成獨立的片段。
location對象的屬性
-
href:跳轉
-
hash 返回url中#后面的內容,包含#
-
host 主機名,包括端口
-
hostname 主機名
-
pathname url中的路徑部分
-
protocol 協議 一般是http、https
-
search 查詢字符串
location.href屬性舉例:
舉例1:點擊盒子時,進行跳轉。
<body>
<div>smyhvae</div>
<script>
var div = document.getElementsByTagName("div")[0];
div.onclick = function () {
location.href = "http://www.baidu.com"; //點擊div時,跳轉到指定鏈接
// window.open("http://www.baidu.com","_blank"); //方式二
}
</script>
</body>
舉例2:5秒后自動跳轉到百度。
有時候,當我們訪問一個不存在的網頁時,會提示5秒后自動跳轉到指定頁面,此時就可以用到location。舉例:
<script>
setTimeout(function () {
location.href = "http://www.baidu.com";
}, 5000);
</script>
location對象的方法
- location.assign():改變瀏覽器地址欄的地址,並記錄到歷史中
設置location.href 就會調用assign()。一般使用location.href 進行頁面之間的跳轉。
-
location.replace():替換瀏覽器地址欄的地址,不會記錄到歷史中
-
location.reload():重新加載
navigator對象
window.navigator 的一些屬性可以獲取客戶端的一些信息。
-
userAgent:系統,瀏覽器)
-
platform:瀏覽器支持的系統,win/mac/linux
舉例:
console.log(navigator.userAgent);
console.log(navigator.platform);
效果如下:
history對象
1、歷史記錄管理
2、后退:
-
history.back()
-
history.go(-1):0是刷新
3、前進:
-
history.forward()
-
history.go(1)
用的不多。因為瀏覽器中已經自帶了這些功能的按鈕:
我的公眾號
想學習代碼之外的軟技能?不妨關注我的微信公眾號:生命團隊(id:vitateam
)。
掃一掃,你將發現另一個全新的世界,而這將是一場美麗的意外: