console對(duì)象目錄
開發(fā)者工具目前,各大瀏覽器都自帶開發(fā)工具。以Chrome瀏覽器為例,它有一個(gè)“開發(fā)者工具”(Developer Tools)用來(lái)調(diào)試網(wǎng)頁(yè)。 打開“開發(fā)者工具”的方法有三種。
打開以后,可以看到在頂端有八個(gè)面板卡可供選擇,分別是:
這八個(gè)面板都有各自的用途,以下詳細(xì)介紹Console面板,也就是控制臺(tái)。 console對(duì)象console對(duì)象代表瀏覽器的JavaScript控制臺(tái)。雖然它還不是標(biāo)準(zhǔn),但是各大瀏覽器都原生支持,已經(jīng)成為事實(shí)上的標(biāo)準(zhǔn)。 console對(duì)象主要有兩個(gè)作用:
console對(duì)象的接口有很多方法,可供開發(fā)者調(diào)用。 console.log()log方法用于在console窗口顯示信息。 如果參數(shù)是普通字符串,log方法將字符串內(nèi)容顯示在console窗口。
如果參數(shù)是格式字符串(使用了格式占位符),log方法將占位符替換以后的內(nèi)容,顯示在console窗口。
上面代碼的%s表示字符串的占位符,其他占位符還有
log方法的兩種參數(shù)格式,可以結(jié)合在一起使用。
console對(duì)象的所有方法,都可以被覆蓋。因此,可以按照自己的需要,定義console.log方法。
上面代碼表示,使用自定義的console.log方法,可以在顯示結(jié)果添加當(dāng)前時(shí)間。 console.debug(),console.info(),console.warn(),console.error()除了log,console對(duì)象還有四個(gè)輸出信息的方法:
這四個(gè)方法的用法與log完全一樣。
console.table()對(duì)于某些復(fù)合類型的數(shù)據(jù),console.table方法可以將其轉(zhuǎn)為表格顯示。
上面代碼的language,轉(zhuǎn)為表格顯示如下。
復(fù)合型數(shù)據(jù)轉(zhuǎn)為表格顯示的條件是,必須擁有主鍵。對(duì)于上面的數(shù)組來(lái)說(shuō),主鍵就是數(shù)字鍵。對(duì)于對(duì)象來(lái)說(shuō),主鍵就是它的最外層鍵。
上面代碼的language,轉(zhuǎn)為表格顯示如下。
console.assert()assert方法用來(lái)驗(yàn)證某個(gè)條件是否為真。如果為假,則顯示一條事先指定的錯(cuò)誤信息。它的格式如下。
使用方法如下。
下面是另一個(gè)例子,判斷子節(jié)點(diǎn)的個(gè)數(shù)是否大于等于500。
console.time(),console.timeEnd()這兩個(gè)方法用于計(jì)時(shí),可以算出一個(gè)操作所花費(fèi)的準(zhǔn)確時(shí)間。
time方法表示計(jì)時(shí)開始,timeEnd方法表示計(jì)時(shí)結(jié)束。它們的參數(shù)是計(jì)時(shí)器的名稱。調(diào)用timeEnd方法之后,console窗口會(huì)顯示“計(jì)時(shí)器名稱: 所耗費(fèi)的時(shí)間”。 console.group(),console.groupend()這兩個(gè)方法用于將顯示的信息分組。它只在輸出大量信息時(shí)有用,分在一組的信息,可以用鼠標(biāo)折疊/展開。 其他方法
命令行API在控制臺(tái)中,除了使用console對(duì)象,還可以使用一些控制臺(tái)自帶的命令行方法。 *(1)$_ * $_屬性返回上一個(gè)表達(dá)式的值。
*(2)$0 - $4 * 控制臺(tái)保存了最近5個(gè)在Elements面板選中的DOM元素,$0代表倒數(shù)第一個(gè),$1代表倒數(shù)第二個(gè),以此類推直到$4。 *(3)$(selector) * $(selector)返回一個(gè)數(shù)組,包括特定的CSS選擇器匹配的所有DOM元素。該方法實(shí)際上是document.querySelectorAll方法的別名。
上面代碼打印出網(wǎng)頁(yè)中所有img元素的src屬性。 *(4)$x(path) * $x(path)方法返回一個(gè)數(shù)組,包含匹配特定XPath表達(dá)式的所有DOM元素。
上面代碼返回所有包含a元素的p元素。 *(5)inspect(object) * inspect(object)方法打開相關(guān)面板,并選中相應(yīng)的元素:DOM元素在Elements面板中顯示,JavaScript對(duì)象在Profiles中顯示。 *(6)getEventListeners(object) * getEventListeners(object)方法返回一個(gè)對(duì)象,該對(duì)象的成員為登記了回調(diào)函數(shù)的各種事件(比如click或keydown),每個(gè)事件對(duì)應(yīng)一個(gè)數(shù)組,數(shù)組的成員為該事件的回調(diào)函數(shù)。 *(7)keys(object),values(object) * keys(object)方法返回一個(gè)數(shù)組,包含特定對(duì)象的所有鍵名。 values(object)方法返回一個(gè)數(shù)組,包含特定對(duì)象的所有鍵值。
(8)monitorEvents(object[, events]) ,unmonitorEvents(object[, events]) monitorEvents(object[, events])方法監(jiān)聽特定對(duì)象上發(fā)生的特定事件。當(dāng)這種情況發(fā)生時(shí),會(huì)返回一個(gè)Event對(duì)象,包含該事件的相關(guān)信息。unmonitorEvents方法用于停止監(jiān)聽。
上面代碼分別表示單個(gè)事件和多個(gè)事件的監(jiān)聽方法。
上面代碼表示如何停止監(jiān)聽。 monitorEvents允許監(jiān)聽同一大類的事件。所有事件可以分成四個(gè)大類。
上面代碼表示監(jiān)聽所有key大類的事件。 *(9)profile([name]),profileEnd() * profile方法用于啟動(dòng)一個(gè)特定名稱的CPU性能測(cè)試,profileEnd方法用于結(jié)束該性能測(cè)試。
*(10)其他方法 * 命令行API還提供以下方法。
debugger語(yǔ)句debugger語(yǔ)句必須與除錯(cuò)工具配合使用,如果沒(méi)有除錯(cuò)工具,debugger語(yǔ)句不會(huì)產(chǎn)生任何結(jié)果。 在chrome瀏覽器中,當(dāng)代碼運(yùn)行到debugger指定的行時(shí),就會(huì)暫停運(yùn)行,自動(dòng)打開console界面。它的作用類似于設(shè)置斷點(diǎn)。
上面代碼打印出0,1,2以后,就會(huì)暫停,自動(dòng)打開console窗口,等待進(jìn)一步處理。 移動(dòng)端開發(fā)(本節(jié)暫存此處) 模擬手機(jī)視口(viewport)chrome瀏覽器的開發(fā)者工具,提供一個(gè)選項(xiàng),可以模擬手機(jī)屏幕的顯示效果。 打開“設(shè)置”的Overrides面板,選擇相應(yīng)的User Agent和Device Metrics選項(xiàng)。 User Agent可以使得當(dāng)前瀏覽器發(fā)出手機(jī)瀏覽器的Agent字符串,Device Metrics則使得當(dāng)前瀏覽器的視口變?yōu)槭謾C(jī)的視口大小。這兩個(gè)選項(xiàng)可以獨(dú)立選擇,不一定同時(shí)選中。 模擬touch事件我們可以在PC端模擬JavaScript的touch事件。 首先,打開chrome瀏覽器的開發(fā)者工具,選擇“設(shè)置”中的Overrides面板,勾選“Enable touch events”選項(xiàng)。 然后,鼠標(biāo)就會(huì)觸發(fā)touchstart、touchmove和touchend事件。(此時(shí),鼠標(biāo)本身的事件依然有效。) 至于多點(diǎn)觸摸,必須要有支持這個(gè)功能的設(shè)備才能模擬,具體可以參考Multi-touch web development。 模擬經(jīng)緯度chrome瀏覽器的開發(fā)者工具,還可以模擬當(dāng)前的經(jīng)緯度數(shù)據(jù)。打開“設(shè)置”的Overrides面板,選中Override Geolocation選項(xiàng),并填入相應(yīng)經(jīng)度和緯度數(shù)據(jù)。 遠(yuǎn)程除錯(cuò)(1) Chrome for Android Android設(shè)備上的Chrome瀏覽器支持USB除錯(cuò)。PC端需要安裝Android SDK和Chrome瀏覽器,然后用usb線將手機(jī)和PC連起來(lái),可參考官方文檔。 (2) Opera Opera瀏覽器的除錯(cuò)環(huán)境Dragonfly支持遠(yuǎn)程除錯(cuò)(教程)。 (3) Firefox for Android 參考官方文檔。 (4) Safari on iOS6 你可以使用Mac桌面電腦的Safari 6瀏覽器,進(jìn)行遠(yuǎn)程除錯(cuò)(教程)。 Google Closure(本節(jié)暫存此處) Google Closure是Google提供的一個(gè)JavaScript源碼處理工具,主要用于壓縮和合并多個(gè)JavaScript腳本文件。 Google Closure使用Java語(yǔ)言開發(fā),使用之前必須先安裝Java。然后,前往官方網(wǎng)站進(jìn)行下載,這里我們主要使用其中的編譯器(compiler)。 首先,查看使用幫助。
直接在腳本命令后面跟上要合并的腳本,就能完成合并。
使用--js參數(shù),可以確保按照參數(shù)的先后次序合并文件。
但是,這樣的運(yùn)行結(jié)果是將合并后的文件全部輸出到屏幕(標(biāo)準(zhǔn)輸出),因此需要使用--js_output_file參數(shù),指定合并后的文件名。
Javascript 性能測(cè)試(本節(jié)暫存此處) 第一種做法最常見的測(cè)試性能的做法,就是同一操作重復(fù)n次,然后計(jì)算每次操作的平均時(shí)間。
上面代碼的問(wèn)題在于,由于計(jì)算機(jī)的性能不斷提高,如果只重復(fù)6次,很可能得到0毫秒的結(jié)果,即不到1毫秒,Javascript引擎無(wú)法測(cè)量。 第二種做法另一種思路是,測(cè)試單位時(shí)間內(nèi)完成了多少次操作。
這種做法的注意之處在于,測(cè)試結(jié)構(gòu)受外界環(huán)境影響很大,為了得到正確結(jié)構(gòu),必須重復(fù)多次。 參考鏈接
|
|