[TOC]
# 簡介
BOM(Browser Object Model) 是指瀏覽器對象模型,瀏覽器對象模型提供了獨立于內容的、可以與瀏覽器窗口進行互動的對象結構。BOM由多個對象組成,其中代表瀏覽器窗口的Window對象是BOM的頂層對象,其他對象都是該對象的子對象。
我們在瀏覽器中的一些操作都可以使用BOM的方式進行編程處理,
比如:刷新瀏覽器、后退、前進、在瀏覽器中輸入URL等
**BOM的頂級對象window**
window是瀏覽器的頂級對象,當調用window下的屬性和方法時,可以省略window 注意:window下一個特殊的屬性 `window.name`
name是windows屬性,是字符串類型, 即使設置數字, 也會轉為字符串
# 對話框
* alert()
* prompt()
* confirm()
~~~
var btn1 = document.getElementById('btn1');
var btn2 = document.getElementById('btn2');
var btn3 = document.getElementById('btn3');
btn1.onclick = function () {
alert('hello world');
}
btn2.onclick = function () {
var userName = prompt('請輸入姓名', '張三');
console.log(userName);
}
btn3.onclick = function () {
var isSure = confirm('是否要刪除數據?');
console.log(isSure);
}
~~~
# 頁面加載事件
* onload
頁面上所有的元素創建完畢,并且引用的外部資源下載完畢(js,css,圖片), 才執行
~~~
window.onload = function () {
// 當頁面加載完成執行
// 當頁面完全加載所有內容(包括圖像、腳本文件、CSS 文件等)執行
}
~~~
**如果js腳本寫在 下面,那是 當頁面上的元素創建完畢就會執行,但是外部文件沒下載完畢也會執行**
* onunload
在onunload中所有對話框都是無法使用的
~~~
window.onunload = function () {
// 當用戶退出頁面時執行
}
~~~
# 定時器
## setTimeout()和clearTimeout()
在指定的毫秒數到達之后執行指定的函數,只執行一次
~~~
// 創建一個定時器,1000毫秒后執行,返回定時器的標示
var timerId = setTimeout(function () {
console.log('Hello World');
}, 1000);
// 取消定時器的執行
clearTimeout(timerId);
~~~
~~~
<input type="button" value="開始" id="btn1">
<input type="button" value="取消" id="btn2">
<script>
// setTimeout() 定時炸彈 隔一段時間執行,并且只會執行一次
// setInterval() 鬧鐘 隔一段時間執行,并且會重復執行
// 定時器的標示
var timerId;
var btn1 = document.getElementById('btn1');
btn1.onclick = function () {
// window.setTimeout()
// 兩個參數
// 第一個參數 要執行的函數
// 第二個參數 間隔的時間 單位是毫秒
// 返回值 是一個整數,是定時器的標示
// timerId = setTimeout(function () {
// console.log('爆炸了');
// }, 3000);
timerId = setTimeout(fn, 3000);
function fn() {
console.log('爆炸了');
}
}
var btn2 = document.getElementById('btn2');
btn2.onclick = function () {
// 取消定時器的執行
clearTimeout(timerId);
}
</script>
~~~
## setInterval()和clearInterval()
定時調用的函數,可以按照給定的時間(單位毫秒)周期調用函數
~~~
// 創建一個定時器,每隔1秒調用一次
var timerId = setInterval(function () {
var date = new Date();
console.log(date.toLocaleTimeString());
}, 1000);
// 取消定時器的執行
clearInterval(timerId);
~~~
# location對象
location對象是window對象下的一個屬性,時候的時候可以省略window對象
location可以獲取或者設置瀏覽器地址欄的URL
## URL
統一資源定位符 (Uniform Resource Locator, URL)
* URL的組成
~~~
scheme://host:port/path?query#fragment
scheme:通信協議
常用的http,ftp,maito等
host:主機
服務器(計算機)域名系統 (DNS) 主機名或 IP 地址。
port:端口號
整數,可選,省略時使用方案的默認端口,如http的默認端口為80。
path:路徑
由零或多個'/'符號隔開的字符串,一般用來表示主機上的一個目錄或文件地址。
query:查詢
可選,用于給動態網頁傳遞參數,可有多個參數,用'&'符號隔開,每個參數的名和值用'='符號隔開。例如:name=zs
fragment:信息片斷
字符串,錨點.
~~~
~~~
<body>
<input type="button" id="btn" value="跳轉" />
</body>
<script type="text/javascript">
var btn = document.getElementById('btn');
btn.onclick = function () {
//打印地址欄的url
console.log(location.href);
//要加協議, 跳轉到這個url, 支持后退
// location.href = "https://www.baidu.com";
//assign 委派
// assign()的 作用和href作用一樣, 可以讓頁面跳轉到指定的地方, 支持后退
// location.assign('https://www.weibo.com');
//替換掉地址欄的地址, 但是不記錄歷史, 不支持后退回去
// location.replace('http://www.baidu.com');
//重新加載 類似 f5刷新
// <meta http-equiv="refresh" content="2">
// location.assign(location);
//參數true 強制從服務器獲取頁面, false 如果瀏覽器有緩存的話,直接從緩存取頁面
location.reload(true);
// f5刷新頁面, 可能從緩存中加載, control+f5 強制刷新, 從服務器獲取頁面
}
</script>
~~~
## 前進和后腿
這是一組前進后退
~~~
* back()
* forward()
~~~
這也是一組前進后退
~~~
//go(1), go(-1) 前進幾層, 后退幾層
* go()
~~~
# navigator對象
* userAgent
通過userAgent可以判斷用戶瀏覽器的類型
* platform
通過platform可以判斷瀏覽器所在的系統平臺類型.
~~~
console.log(navigator.userAgent);
console.log(navigator.platform);
~~~
# js中的style注意
~~~
// style.left 獲取的是標簽中的style屬性設置的樣式屬性的值
// 如果標簽中的style沒有設置該樣式屬性,我們獲取到的是空字符串
console.log(box.style.left);
// 10px10px 當我們給樣式屬性設置非法的值,瀏覽器會幫我們過濾掉
console.log(box.style.left + 10 + 'px');
box.style.left = box.style.left + 10 + 'px';
~~~
- HTML
- 標簽
- 超鏈接
- 列表
- 表格和表單
- h5新增標簽
- 快捷方式
- 標簽包含
- CSS
- 選擇器
- 行內,塊元素,鏈接
- css三大特性
- 盒子模型
- 定位
- css可見性
- emment書寫
- 文本元素
- 外觀屬性
- 背景
- 浮動
- ps
- 用戶界面樣式
- 顯示和隱藏
- 過渡
- 2D,3D變形
- 動畫animation
- 伸縮布局(CSS3)
- BFC
- 優雅降級和漸進增強
- 3D旋轉
- 雙飛翼和圣杯
- JS基礎
- 輸出消息的幾種方式
- 數據類型
- Date對象
- Math對象
- Array對象
- 字符串常用方法
- 數據類型轉換
- 等號運算
- 代碼調試
- 數組
- 函數
- WebAPI
- webapi簡介
- 獲取頁面元素
- 事件
- 屬性操作
- 創建元素
- 節點操作
- 事件詳解
- BOM
- 位置相關屬性
- 拖拽彈窗
- 彈出層加遮罩
- ES6
- let和const
- 解構表達式變化
- 函數優化
- map和reduce
- nrm
- npm
- npm基礎
- package.json
- 淘寶鏡像
- webpack
- 介紹
- 多入口文件(Multiple entry files)
- Webpack CSS loader加載器
- webpack Image loader 加載圖片
- uglify-js壓縮打包JS
- webpack構建本地服務器
- vue內部指令
- v-if,v-show,v-for
- v-text,v-html
- v-on
- v-model
- v-bind
- v-pre,v-cloak,v-once
- vue全局api
- Vue.directive 自定義指令
- vue.extend構造器的延伸
- vue.set全局操作
- Vue的生命周期(鉤子函數)
- Template 制作模版
- Component 初識組件
- Component 組件props 屬性設置
- Component 父子組件關系
- Component 標簽
- vue選項
- propsData Option全局擴展數據傳遞
- computed Option 計算選項
- Methods Option 方法選項
- watch選項監控數據
- Mixins 混入選項操作
- Extends Option 擴展選項
- delimiters 選項
- vue實例和內置組件
- 實例屬性
- 實例方法
- 實例事件
- 內置組件 -slot
- vue-cli
- vue-cli介紹
- 項目目錄結構
- vue-cli模板
- vue-router
- 簡介
- 配置子路由
- 參數傳遞
- 單頁面多路由區域操作
- url傳遞參數
- vscode