原生js學習筆記5——BOM操做javascript

 

 什麼是BOMhtml

  BOM:Browser Object Model 是瀏覽器對象模型,瀏覽器對象模型提供了獨立與內容的、能夠與瀏覽器窗口進行互動的對象結構,BOM由多個對象構成,其中表明瀏覽器窗口的window對象是BOM的頂層對象,其餘對象都是該對象的子對象。java

  目前主流瀏覽器介紹瀏覽器

  • IE——11: 國內用得最多的IE瀏覽器,從來對W3C標準支持差。從IE10開始支持ES6標準;cookie

  • Sarafi:Apple的Mac系統自帶的基於Webkit內核的瀏覽器,從OS X 10.7 Lion自帶的6.1版本開始支持ES6,目前最新的OS X 10.10 Yosemite自帶的Sarafi版本是8.x,早已支持ES6;app

  • Firefox:Mozilla本身研製的Gecko內核和JavaScript引擎OdinMonkey。早期的Firefox按版本發佈,後來終於聰明地學習Chrome的作法進行自升級,時刻保持最新;函數

  • 移動設備上目前iOS和Android兩大陣營分別主要使用Apple的Safari和Google的Chrome,因爲二者都是Webkit核心,結果HTML5首先在手機上全面普及(桌面絕對是Microsoft拖了後腿),對JavaScript的標準支持也很好,最新版本均支持ES6。工具

  這裏爲何沒有說到360瀏覽器、搜狗瀏覽器呢?其實這一類瀏覽器只是在以上列舉出來的瀏覽器的內核基礎上,換了一個包裝,添加了一些個性功能而已,本質上並無什麼區別。post

  能夠操做的BOM對象學習

  window對象

  全部瀏覽器都支持 window 對象。它表示瀏覽器窗口。

  全部 JavaScript 全局對象、函數以及變量均自動成爲 window 對象的成員。

  全局變量是 window 對象的屬性。

  全局函數是 window 對象的方法。

  甚至 HTML DOM 的 document 也是 window 對象的屬性之一:

window.document.getElementById("header");

  與此相同:

document.getElementById("header");

  window尺寸

  有三種方法可以肯定瀏覽器窗口的尺寸(瀏覽器的視口,不包括工具欄和滾動條)。

  對於Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

  • window.innerHeight - 瀏覽器窗口的內部高度

  • window.innerWidth - 瀏覽器窗口的內部寬度

  對於 Internet Explorer 八、七、六、5:

  • document.documentElement.clientHeight

  • document.documentElement.clientWidth

  或者

  • document.body.clientHeight

  • document.body.clientWidth

  實用的 JavaScript 方案(涵蓋全部瀏覽器):

<!DOCTYPE html><html><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="瀏覽器的內部窗口寬度:" + w + ",高度:" + h + "。"</script>

</body></html>

  該例顯示瀏覽器窗口的高度和寬度:(不包括工具欄/滾動條)

  除此以外,還有一個outerWidth和outerHeight屬性,能夠獲取瀏覽器窗口的整個寬高。

  其餘操做window方法(不經常使用)

  • window.open() - 打開新窗口

  • window.close() - 關閉當前窗口

  • window.moveTo() - 移動當前窗口

  • window.resizeTo() - 調整當前窗口的尺寸

  navigator

  navigator對象表示瀏覽器的信息,最經常使用的屬性包括:

  • navigator.appName:瀏覽器名稱;

  • navigator.appVersion:瀏覽器版本;

  • navigator.language:瀏覽器設置的語言;

  • navigator.platform:操做系統類型;

  • navigator.userAgent:瀏覽器設定的User-Agent字符串。

  window.navigator 對象在編寫時可不使用 window 這個前綴。

  示例:

<!DOCTYPE html><html><body><div id="example"></div>

<script>

 

txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>";

txt+= "<p>Browser Name: " + navigator.appName + "</p>";

txt+= "<p>Browser Version: " + navigator.appVersion + "</p>";

txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>";

txt+= "<p>Platform: " + navigator.platform + "</p>";

txt+= "<p>User-agent header: " + navigator.userAgent + "</p>";

txt+= "<p>User-agent language: " + navigator.systemLanguage + "</p>";

document.getElementById("example").innerHTML=txt;

</script>

</body></html>

  注意

  來自 navigator 對象的信息具備誤導性,不該該被用於檢測瀏覽器版本,這是由於:

  • navigator 數據可被瀏覽器使用者更改

  • 瀏覽器沒法報告晚於瀏覽器發佈的新操做系統

  screen

  screen對象表示屏幕的信息,經常使用的屬性有:

  • screen.width:屏幕寬度,以像素爲單位;

  • screen.availWidth:屏幕的可用寬度,以像素爲單位

  • screen.height:屏幕高度,以像素爲單位;

  • screen.availHeight:屏幕的可用高度,以像素爲單位

  • screen.colorDepth:返回顏色位數,如八、1六、24。

  window.screen 對象在編寫時能夠不使用 window 這個前綴。

<script type="text/javascript">document.write( "屏幕寬度:"+screen.width+"px<br />" );document.write( "屏幕高度:"+screen.height+"px<br />" );document.write( "屏幕可用寬度:"+screen.availWidth+"px<br />" );document.write( "屏幕可用高度:"+screen.availHeight+"px" );</script>

  Location

  location對象表示當前頁面的URL信息。例如,一個完整的URL:

http://www.example.com:8080/path/index.html?a=1&b=2#TOP

  能夠用location.href獲取:

<script>

document.write(location.href);

</script>

  要得到URL各個部分的值,能夠這麼寫:

location.protocol; // 'http'

location.host; // 'www.example.com'

location.port; // '8080'

location.pathname; // '/path/index.html'

location.search; // '?a=1&b=2'

location.hash; // 'TOP'

  要加載一個新頁面,能夠調用location.assign()。若是要從新加載當前頁面,調用location.reload()方法很是方便。

  示例:加載一個新頁面

<!DOCTYPE html><html><head><script>function newDoc()

 {

 window.location.assign("http://www.w3school.com.cn")

 }</script></head><body>

<input type="button" value="加載新文檔" onclick="newDoc()">

</body></html>

  History

  history對象保存了瀏覽器的歷史記錄,JavaScript能夠調用history對象的back()或forward (),至關於用戶點擊了瀏覽器的「後退」或「前進」按鈕。

  History Back

  history.back() 方法加載歷史列表中的前一個 URL。

  這與在瀏覽器中點擊後退按鈕是相同的:

<html><head><script>function goBack()

  {

  window.history.back()

  }</script></head><body>

<input type="button" value="Back" onclick="goBack()">

</body></html>

  History Forward

  history forward() 方法加載歷史列表中的下一個 URL。

  這與在瀏覽器中點擊前進按鈕是相同的:

<html><head><script>function goForward()

  {

  window.history.forward()

  }</script></head><body>

<input type="button" value="Forward" onclick="goForward()">

</body></html>

  注意

  這個對象屬於歷史遺留對象,對於現代Web頁面來講,因爲大量使用AJAX和頁面交互,簡單粗暴地調用history.back()可能會讓用戶感到很是憤怒。

  新手開始設計Web頁面時喜歡在登陸頁登陸成功時調用history.back(),試圖回到登陸前的頁面。這是一種錯誤的方法。

  任何狀況,你都不該該使用history這個對象了。

  拓展

  系統對話框

  • alert()警告框,沒有返回值

  • confirm('提問的內容')返回boolean

  • prompt(),輸入框,返回字符串或null

  window對象經常使用事件

  • onload:當頁面加載時

  • onscroll:當頁面滾動時

  • onresize:頁面從新定義大小時