那些你不知道的,可以用Chrome's Developer Console完成的事

題圖

Chrome內嵌的開發者工具擁有很多特性,例如網頁元素,網絡,和安全。今天我們將全部注意力投入到它的JavaScript控制臺。

我剛開始編程時,僅僅把JavaScript控制臺當做服務器響應包的日志輸出,或者輸出變量的值。隨后,在幫助文檔的幫助下,我發現了控制臺可以做的很多事情都是我未曾想象過的。

以下是非常有用的功能,如果你閱讀這篇文章時使用的是Chrome瀏覽器,你甚至可以立即打開它的開發工具并嘗試這些功能。

1. 選擇DOM元素

如果你對jQuery比較熟悉,你知道('.class')和('#id')是非常重要的,它們可以利用和DOM元素相關聯的id或class對元素進行選擇。

但是當你不在jQuery和DOM環境中時,你仍然可以利用開發者控制臺并使用相同的功能操作DOM。

$('tagName')、$('.class')、$('#id')、$('.class #id')document.querySelector('')等價,將返回所匹配元素列表的第一個元素。

你可以使用雙美元符$$('tagName')或$$('.class')選擇被匹配的所有DOM元素,這些元素將被放入一個數組中。更進一步,你可以通過指定數組中的一個下標從而選出其中特定元素。

例如,$$('.className')將返回包含類className的所有元素,$$('.className')[0]$$('.className')[1]將分別返回其中的第一個和第二個元素。

developer console

2. 把你的瀏覽器變成一個編輯器

是否可以在瀏覽器中編輯文字?這個問題你想過多少次?答案是可以。你可以把你的瀏覽器變成一個編輯器,你可以在任意DOM中增加或刪除文字。

你不再需要在HTML文件中編輯這個元素了,相反的,打開開發者控制臺,并輸入以下命令:

document.body.contentEditable=true

該命令將使頁面可編輯,此時你幾乎可以編輯DOM中的任何東西。

3. 查找DOM中和某個元素相關聯的事件

Debug時,你應該對查找DOM中和某個元素綁定的事件監聽者感興趣。開發者控制臺讓這件事變得簡單。

getEventListeners($('selector'))返回綁定在指定元素上的所有事件對象的一個數組,你可以展開該對象從而查看事件:

getEventListeners

你可以輸入以下命令,從而輸出監聽器上的特定事件:

getEventListeners($(‘selector’)).eventName[0].listener 

該操作將展示監聽器上綁定的特定事件,這里eventName[0]是一個列有特定事件的事件數組,例如:

getEventListeners($(‘firstName’)).click[0].listener 

...將展示與ID為'firstName'元素相關聯的點擊事件的監聽者。

4. 監控事件

當你想監控DOM中某個元素執行中的事件,你也可以在開發者控制臺中完成。以下是不同的監控這些事件的命令:

  • monitorEvents($('selector')):監控選擇器指定元素所關聯的所有事件,一旦事件觸發,將日志記錄到控制臺。例如,monitorEvents($('#firstName'))將記錄綁定在ID為'firstName'的元素上的所有事件。
  • monitorEvents($(‘selector’),’eventName’):將記錄綁定在元素上的特定事件,你可以將事件名作為參數傳遞給該函數。例如,monitorEvents($('#firstName'), 'click')將記錄所有綁定在ID為'firstName'的元素上的點擊事件。
  • monitorEvents($(‘selector’),[‘eventName1’,’eventName3',….]):該命令將記錄多個事件,具體數量取決于你的需求。區別是需要傳遞一組事件字符串數組作為參數,而不是單個事件名。例如monitorEvents($('#firstName'), ['click', 'focus'])將記錄在ID為'firstName'元素上所綁定的點擊和焦點事件。
  • unmonitorEvents($(‘selector’)):停止監控和記錄控制臺中的事件。

5. 查看某個代碼塊的執行時間

console.time('labelName')是JavaScript console的基本函數,它接受一個標簽名作為參數,并開始計時。對應的,console.timeEnd('labelName')是另一個基本函數,它同樣接受標簽名作為參數,并結束標簽名對應的時間。

例如:

console.time('myTime'); //Starts the timer with label - myTime
console.timeEnd('mytime'); //Ends the timer with Label - myTime

//Output: myTime:123.00 ms

上面代碼的前兩行將返回時間開始到時間結束之間的時間。

我們可以利用它來計算執行一段代碼所消耗的時間。

例如,我們想知道執行一個循環所消耗的時間,可以這樣做:

console.time('myTime'); //Starts the timer with label - myTime

for(var i=0; i < 100000; i++){
  2+4+5;
}

console.timeEnd('mytime'); //Ends the timer with Label - myTime

//Output - myTime:12345.00 ms

6. 將變量的值排列到表格中

假設我們有一個數組變量看起來像這樣:

var myArray=[{a:1,b:2,c:3},{a:1,b:2,c:3,d:4},{k:11,f:22},{a:1,b:2,c:3}]

當我們在控制臺敲入變量名,將會以數組對象的形式展示,這非常有幫助,你可以展開對象從而查看對象值。

但當屬性數量增加時,是比較難理解的。因此,為了更清晰的展示變量數據,我們可以將它們放到表格中。

console.table(variableName)將變量及其屬性以表格的結構展示。它們看起來像這樣:

console.table

7. 檢查DOM中的元素

在控制臺中,你可以直接檢查某個元素

  • inspect($('selector'))將監視被匹配的元素,這個元素會被列在Chrome Developer Tool是的Elements標簽欄。例如inspect($('#firstName'))將監視ID為'firstName'的元素;inspect($('a'[3]))將監視DOM中第4個<a>元素
  • 0,1, 2, 等等,可以幫你獲取當前被監視的元素。例如0返回最后一個被監視的元素,而$1返回倒數第二個。

8. 列出元素的屬性

如果你想列出元素所有的屬性,你也可以直接在控制臺完成。

dir($('selector'))返回一個包含關聯元素中所有屬性的對象,你可以展開查看更多細節。

9. 重新獲取上一次結果的值

你可以把控制臺當做一個計算器,當你這樣做時,你可能需要在第二個算式中使用第一個算式的計算結果,以下是如何在內存中獲取前一個計算結果的方式:

$_

類似這樣:

2+3+4
9 //- The Answer of the SUM is 9

$_
9 // Gives the last Result

$_ * $_
81  // As the last Result was 9

Math.sqrt($_)
9 // As the last Result was 81

$_
9 // As the Last Result is 9

10. 清空控制臺和內存

如果你想清空控制臺和它的內存,只需要輸入:

clear()

這里只是Chrome的Javascript控制臺的部分例子,我希望這些小技巧可以讓你的工作更高效。

原文:Things you probably didn’t know you could do with Chrome’s Developer Console

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,791評論 6 545
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,795評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,943評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,057評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,773評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,106評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,082評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,282評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,793評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,507評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,741評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,220評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,929評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,325評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,661評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,482評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,702評論 2 380

推薦閱讀更多精彩內容