BOM操作
阿新 • • 發佈:2020-12-09
1.視窗操作
1.在當前視窗開啟,可後退 HTML: <a href="url" target="_self"> JS: open("url","_self") 2.在當前視窗開啟,禁止後退 JS: location.replace("新url") //用新url代替history中當前地址 3.在新視窗開啟,可開啟多個 HTML: <a href="url" target="_blank"> JS: open("url","_blank") 4.在新視窗開啟,只能開啟一個 HTML: <a href="url" target="自定義的視窗名"> JS: open("url","自定義的視窗名") 原理: target屬性其實是為新視窗指定記憶體中唯一的視窗名,瀏覽器規定,同一時刻,同名視窗只能開啟一個,後開啟的會覆蓋先開啟的 _self :自動使用當前視窗的name _blank :不指定視窗名, 每開啟一個視窗,瀏覽器會自動隨機生成內部視窗名 關閉視窗: /*window.*/close();
練習:對上述開啟視窗的四種方式分別練習
<script> function open1(){ open("http://www.baidu.com","_self"); } function open2(){ location.replace("http://www.baidu.com"); } function open3(){ open("http://www.baidu.com","_blank"); }function open4(){ open("http://www.baidu.com","baidu"); } </script> <a href="http://www.baidu.com" target="_self">在當前視窗開啟,可後退</a> <a href="javascript:open1()">在當前視窗開啟,可後退(JS)</a> <br> <a href="javascript:open2()">在當前視窗開啟,不可後退(JS)</a> <br> <a href="http://www.baidu.com" target="_blank">在新視窗開啟,可開啟多個</a> <a href="javascript:open3()">在新視窗開啟,可開啟多個(JS)</a> <br> <a href="http://www.baidu.com" target="baidu">在新視窗開啟,只能開啟一個</a> <a href="javascript:open4()">在新視窗開啟,只能開啟一個(JS)</a>
2.history
定義:儲存當前視窗開啟後,成功訪問過的url的歷史紀錄棧 操作: 前進:history.go(1) 後退:history.go(-1) history.go(-2) 重新整理:history.go(0)
3.location
定義:儲存當前視窗正在開啟的url地址的物件 屬性: .href :獲取或設定完整的url地址 .protocol :協議 .host :主機名+埠號 .hostname :主機名 .port :埠號 .pathname :相對路徑 .search :查詢字串引數 .hash :錨點地址 方法: 1.在當前視窗開啟,可後退 location="url" 2.在當前視窗開啟,禁止後退 location.replace("新url") 3.重新整理 普通重新整理:優先從快取中獲取資源,快取沒有或過期,才去伺服器找 F5 history.go(0) location.reload() 強制重新整理:無論有沒有快取,都強制從伺服器獲取新資源 location.reload(true)
練習:將search轉化為物件形式
//?username=zhangdong&pwd=123456&favs=running&favs=swimming&favs=basketball function search2Obj() { var obj = {}; if (location.search) { var arr = location.search.slice(1).split("&"); //arr:[username=zhangdong,pwd=123456,...] for (var str of arr) {//遍歷arr中每個子字串 var subs = str.split("="); var key = subs[0]; var value = subs[1]; //subs[username, zhangdong] if (obj[key] === undefined) obj[key] = value; //.key=>["key"] key被寫死為固定的字串 //[key] key是動態變化的變數 else { obj[key] = [].concat(obj[key], value); //將屬性的舊值和新值,拼到一個共同的陣列中,然後將陣列儲存到新的屬性中 } } } return obj; } var obj = search2Obj(); console.log(obj);