摘要:對(duì)象不但充當(dāng)全局作用域,而且表示瀏覽器窗口。對(duì)象有和屬性,可以獲取瀏覽器窗口的內(nèi)部寬度和高度。對(duì)象表示當(dāng)前頁(yè)面的信息。由于在瀏覽器中以形式表示為樹形結(jié)構(gòu),對(duì)象就是整個(gè)樹的根節(jié)點(diǎn)。這個(gè)行為由瀏覽器實(shí)現(xiàn),主流瀏覽器均支持選項(xiàng),從開始支持。
瀏覽器
目前主流的瀏覽器:
IE 6~11:從IE10開始支持ES6標(biāo)準(zhǔn);
Chrome:基于Webkit內(nèi)核,內(nèi)置了非常強(qiáng)悍的JavaScript引擎——V8;
Safari:基于Webkit內(nèi)核;
Firefox:Gecko內(nèi)核,JavaScript引擎OdinMonkey;
不同的瀏覽器對(duì)JavaScript支持的差異主要是,有些API的接口不一樣,比如AJAX,F(xiàn)ile接口。對(duì)于ES6標(biāo)準(zhǔn),不同的瀏覽器對(duì)各個(gè)特性支持也不一樣。
1.windowwindow對(duì)象不但充當(dāng)全局作用域,而且表示瀏覽器窗口。
window對(duì)象有innerWidth和innerHeight屬性,可以獲取瀏覽器窗口的內(nèi)部寬度和高度。內(nèi)部寬高是指除去菜單欄、工具欄、邊框等占位元素后,用于顯示網(wǎng)頁(yè)的凈寬高。
對(duì)應(yīng)的,還有一個(gè)outerWidth和outerHeight屬性,可以獲取瀏覽器窗口的整個(gè)寬高。
兼容性:IE<=8不支持。
navigator對(duì)象表示瀏覽器的信息,最常用的屬性包括:
navigator.appName:瀏覽器名稱; navigator.appVersion:瀏覽器版本; navigator.language:瀏覽器設(shè)置的語(yǔ)言; navigator.platform:操作系統(tǒng)類型; navigator.userAgent:瀏覽器設(shè)定的User-Agent字符串。
充分利用JavaScript對(duì)不存在屬性返回undefined的特性,直接用短路運(yùn)算符||計(jì)算:
var width = window.innerWidth || document.body.clientWidth;3.screen
screen對(duì)象表示屏幕的信息,常用的屬性有:
screen.width:屏幕寬度,以像素為單位; screen.height:屏幕高度,以像素為單位; screen.colorDepth:返回顏色位數(shù),如8、16、24。4.location
location對(duì)象表示當(dāng)前頁(yè)面的URL信息。例如,一個(gè)完整的URL:
http://www.example.com:8080/p...
可以用location.href獲取。要獲得URL各個(gè)部分的值,可以這么寫:
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"
要加載一個(gè)新頁(yè)面,可以調(diào)用location.assign()。如果要重新加載當(dāng)前頁(yè)面,調(diào)用location.reload()方法非常方便。
5.documentdocument對(duì)象表示當(dāng)前頁(yè)面。由于HTML在瀏覽器中以DOM形式表示為樹形結(jié)構(gòu),document對(duì)象就是整個(gè)DOM樹的根節(jié)點(diǎn)。
document的title屬性是從HTML文檔中的
document.title = "努力學(xué)習(xí)JavaScript!";
請(qǐng)觀察瀏覽器窗口標(biāo)題的變化。
用document對(duì)象提供的getElementById()和getElementsByTagName()可以按ID獲得一個(gè)DOM節(jié)點(diǎn)和按Tag名稱獲得一組DOM節(jié)點(diǎn)
document對(duì)象還有一個(gè)cookie屬性,可以獲取當(dāng)前頁(yè)面的Cookie。
Cookie是由服務(wù)器發(fā)送的key-value標(biāo)示符。因?yàn)镠TTP協(xié)議是無狀態(tài)的,但是服務(wù)器要區(qū)分到底是哪個(gè)用戶發(fā)過來的請(qǐng)求,就可以用Cookie來區(qū)分。當(dāng)一個(gè)用戶成功登錄后,服務(wù)器發(fā)送一個(gè)Cookie給瀏覽器,例如user=ABC123XYZ(加密的字符串)...,此后,瀏覽器訪問該網(wǎng)站時(shí),會(huì)在請(qǐng)求頭附上這個(gè)Cookie,服務(wù)器根據(jù)Cookie即可區(qū)分出用戶。
Cookie還可以存儲(chǔ)網(wǎng)站的一些設(shè)置,例如,頁(yè)面顯示的語(yǔ)言等等。
JavaScript可以通過document.cookie讀取到當(dāng)前頁(yè)面的Cookie:
document.cookie; // "v=123; remember=true; prefer=zh"
服務(wù)器在設(shè)置Cookie時(shí)可以使用httpOnly,設(shè)定了httpOnly的Cookie將不能被JavaScript讀取。這個(gè)行為由瀏覽器實(shí)現(xiàn),主流瀏覽器均支持httpOnly選項(xiàng),IE從IE6 SP1開始支持。
為了確保安全,服務(wù)器端在設(shè)置Cookie時(shí),應(yīng)該始終堅(jiān)持使用httpOnly。
6.historyhistory對(duì)象保存了瀏覽器的歷史記錄,JavaScript可以調(diào)用history對(duì)象的back()或forward (),相當(dāng)于用戶點(diǎn)擊了瀏覽器的“后退”或“前進(jìn)”按鈕。
這個(gè)對(duì)象屬于歷史遺留對(duì)象,對(duì)于現(xiàn)代Web頁(yè)面來說,由于大量使用AJAX和頁(yè)面交互,簡(jiǎn)單粗暴地調(diào)用history.back()可能會(huì)讓用戶感到非常憤怒。
新手開始設(shè)計(jì)Web頁(yè)面時(shí)喜歡在登錄頁(yè)登錄成功時(shí)調(diào)用history.back(),試圖回到登錄前的頁(yè)面。這是一種錯(cuò)誤的方法。
任何情況,你都不應(yīng)該使用history這個(gè)對(duì)象了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/82003.html
摘要:用操作表單和操作是類似的,因?yàn)楸韱伪旧硪彩菢洹R虼耍诙N方式是響應(yīng)本身的事件,在提交時(shí)作修改可以在此修改的繼續(xù)下一步注意要來告訴瀏覽器繼續(xù)提交,如果,瀏覽器將不會(huì)繼續(xù)提交,這種情況通常對(duì)應(yīng)用戶輸入有誤,提示用戶錯(cuò)誤信息后終止提交。 用JavaScript操作表單和操作DOM是類似的,因?yàn)楸韱伪旧硪彩荄OM樹。 HTML表單的輸入控件主要有以下幾種: 文本框,對(duì)應(yīng)的,用于輸入文本; ...
摘要:例如,在一個(gè)中,刪掉偶數(shù),只保留奇數(shù),可以這么寫把一個(gè)中的空字符串刪掉,可以這么寫注意以下的版本沒有方法可見用這個(gè)高階函數(shù),關(guān)鍵在于正確實(shí)現(xiàn)一個(gè)篩選函數(shù)。回調(diào)函數(shù)接收的回調(diào)函數(shù),其實(shí)可以有多個(gè)參數(shù)。 1.map 由于map()方法定義在JavaScript的Array中,我們調(diào)用Array的map()方法,傳入我們自己的函數(shù),就得到了一個(gè)新的Array作為結(jié)果: function po...
摘要:你可能認(rèn)為調(diào)用,和結(jié)果應(yīng)該是,,,但實(shí)際結(jié)果是全部都是原因就在于返回的函數(shù)引用了變量,但它并非立刻執(zhí)行。返回閉包時(shí)牢記的一點(diǎn)就是返回函數(shù)不要引用任何循環(huán)變量,或者后續(xù)會(huì)發(fā)生變化的變量。真的是看著很暈?zāi)? 閉包 另一個(gè)需要注意的問題是,返回的函數(shù)并沒有立刻執(zhí)行,而是直到調(diào)用了f()才執(zhí)行。我們來看一個(gè)例子: function count() { var arr = []; ...
摘要:在回調(diào)函數(shù)中,通常我們只需通過判斷請(qǐng)求是否完成,如果已完成,再根據(jù)判斷是否是一個(gè)成功的響應(yīng)。因此我們需要首先在頁(yè)面中準(zhǔn)備好回調(diào)函數(shù)當(dāng)前價(jià)格最后用函數(shù)觸發(fā)表示本域,也就是瀏覽器當(dāng)前頁(yè)面的域。 Asynchronous JavaScript and XML,意思就是用JavaScript執(zhí)行異步網(wǎng)絡(luò)請(qǐng)求。 如果仔細(xì)觀察一個(gè)Form的提交,你就會(huì)發(fā)現(xiàn),一旦用戶點(diǎn)擊Submit按鈕,表單開始提...
JSON JSON是JavaScript Object Notation的縮寫,它是一種數(shù)據(jù)交換格式。 道格拉斯·克羅克福特(Douglas Crockford)--雅虎的高級(jí)架構(gòu)師--發(fā)明了JSON這種超輕量級(jí)的數(shù)據(jù)交換格式. 序列化 讓我們先把小明這個(gè)對(duì)象序列化成JSON格式的字符串: var xiaoming = { name: 小明, age: 14, gender...
閱讀 2696·2021-09-22 15:58
閱讀 2238·2019-08-29 16:06
閱讀 906·2019-08-29 14:14
閱讀 2815·2019-08-29 13:48
閱讀 2459·2019-08-28 18:01
閱讀 1504·2019-08-28 17:52
閱讀 3328·2019-08-26 14:05
閱讀 1622·2019-08-26 13:50