Google開發(fā)者工具

作者:燁竹

寫在前面:因為只是學(xué)習(xí)珊蟀,所以只寫了自己想學(xué)的远寸,畢竟我只是個小白途蒋。主要介紹斷點調(diào)試猛遍,和console控制臺。

一号坡、ui界面簡介

Ctrl+ Shift+ P 打開DevTools命令菜單
setting設(shè)置菜單

二懊烤、前端css樣式調(diào)節(jié)

2018-05-15_142419.png
樣式調(diào)節(jié).png

三、斷點調(diào)試

斷點.png

四宽堆、控制臺

控制臺用途.png

打開方式:conloseCtrl+Shift+J
清除控制臺歷史記錄:clear()

功能簡介

1.查看關(guān)于頁面的診斷信息腌紧。這些信息可以來自構(gòu)建頁面的Web開發(fā)人員,也可以來自瀏覽器畜隶。

記錄消息:console.log('click listener executed')

2.運行JavaScript壁肋。您可以通過在控制臺中鍵入JavaScript語句來查看和更改頁面的DOM∽崖或者浸遗,如果您只想進行實驗,則可以使用控制臺作為您的代碼游樂場來運行與頁面無關(guān)的代碼箱亿。

function add(a, b=20) {
  return a + b;
}
add(25);
診斷并記錄到控制臺中

console.log() 基本記錄
console.log("Node count:", "a.childNodes.length", "and the current time is:", Date.now());

console.error() 和 console.warn() 顯示引入注目的消息

console.error() 方法會顯示紅色圖標(biāo)和紅色消息文本乙帮;
console.warn() 方法會顯示一個黃色警告圖標(biāo)和相應(yīng)的消息文本;

console.group() 和 console.groupEnd() 對相關(guān)消息進行分組极景,避免混亂
var user = "jsmith", authenticated = false;
console.group("Authentication phase");
console.log("Authenticating user '%s'", user);
// authentication code here...
if (!authenticated) {
    console.log("User '%s' not authenticated.", user)
}
console.groupEnd();
console.assert() 顯示條件性錯誤消息

console.assert() 方法可以僅在其第一個參數(shù)為 false 時有條件地顯示錯誤字符串(其第二個參數(shù))

console.assert(list.childNodes.length < 500, "Node count is > 500");
//此代碼僅會在屬于 list 元素的子節(jié)點數(shù)大于 500 時在控制臺中顯示一條錯誤消息
字符串替代和格式設(shè)置

console.log("%s has %d points", "Sam", 100);

%s 將值格式化為字符串

%i 或 %d 將值格式化為整型

%f 將值格式化為浮點值

%o 將值格式化為可擴展 DOM 元素。如同在 Elements 面板中顯示的一樣

%O 將值格式化為可擴展 JavaScript 對象

%c 將 CSS 樣式規(guī)則應(yīng)用到第二個參數(shù)指定的輸出字符串

使用 CSS 設(shè)置控制臺輸出的樣式

console.log("%cThis will be formatted with large, blue text", "color: blue; font-size: x-large");

將 DOM 元素格式化為 JavaScript 對象:console.dir ()
比較類似的數(shù)據(jù)對象

基本示例:記錄對象數(shù)組

console.table([{a:1, b:2, c:3}, {a:"foo", b:false, c:undefined}]);
console.table([[1,2,3], [2,3,4]]);

高級示例:記錄特定的屬性

function Person(firstName, lastName, age) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.age = age;
}

var family = {};
family.mother = new Person("Susan", "Doyle", 32);
family.father = new Person("John", "Doyle", 33);
family.daughter = new Person("Lily", "Doyle", 5);
family.son = new Person("Mike", "Doyle", 8);

console.table(family, ["firstName", "lastName", "age"]);
使用 console.time() 和 console.timeEnd() 跟蹤代碼執(zhí)行點之間經(jīng)過的時間驾茴。

基本示例

console.time("Array initialize");
var array= new Array(1000000);
for (var i = array.length - 1; i >= 0; i--) {
    array[i] = new Object();
};
console.timeEnd("Array initialize");
使用 console.count() 對相同字符串傳遞到函數(shù)的次數(shù)進行計數(shù)盼樟。
function login(user) {
    console.count("Login called for user " + user);
}

users = [ // by last name since we have too many Pauls.
    'Irish',
    'Bakaus',
    'Kinlan'
];

users.forEach(function(element, index, array) {
    login(element);
});

login(users[0]);
異常和錯誤處理

1.觸發(fā)異常時啟用 Pause on Exceptions 來調(diào)試代碼上下文。

i.跟蹤異常:查看JavaScript錯誤消息,每一條消息都有一個指向文件名的鏈接锈至,文件名帶有您可以導(dǎo)航到文件的行號晨缴。
ii.視圖異常堆疊追蹤:導(dǎo)致錯誤的執(zhí)行路徑并不總是非常明顯。
完整的JavaScript 調(diào)用堆棧在控制臺中會伴隨著異常峡捡。展開這些控制臺消息可以查看堆椈魍耄框架和導(dǎo)航到代碼中的相應(yīng)位置
iii.出現(xiàn)JavaScript 異常時暫停:下一次引發(fā)異常時,請暫停JavaScript 執(zhí)行并檢查其調(diào)用堆棧们拙、范圍變量以及您應(yīng)用的狀態(tài)稍途。
利用Scripts 面板底部的三態(tài)停止按鈕,您可以在不同的異常處理模式之間切換:暫停按鈕

2.打印堆疊追蹤

Error.stack:每個Error 對象都有一個包含堆疊追蹤的字符串屬性命名的堆棧
console.trace():使用可以打印當(dāng)前JavaScript調(diào)用跟蹤的console.trace()調(diào)用設(shè)置您的代碼
console.assert():通過將帶有錯誤條件的console.assert()作為第一個參數(shù)調(diào)用砚婆,在您的JavaScript代碼中放置斷言械拍。
當(dāng)此表達式評估為false時,您將看到一條相應(yīng)的Console記錄

3.使用 window.onerror 記錄瀏覽器中發(fā)生的錯誤。

api
>console.assert(expression, object):在被評估的表達式為 false 時向控制臺寫入一個錯誤
console.clear():清除控制臺

console.count(label)寫入在同一行使用相同標(biāo)簽調(diào)用 count() 的次數(shù)

console.debug(object [, object, ...]):與 console.log() 作用相同坷虑。

console.dir(object):輸出以 JavaScript 形式表示的指定對象甲馋。
如果正在記錄的對象是 HTML 元素,將輸出其以 DOM 形式表示的屬性迄损,如下所示:console.dir(document.body);

console.dirxml(object)
如果可以定躏,輸出 object 子級元素的 XML 表示形式,否則輸出其 JavaScript 表示形式
 在 HTML 和 XML 元素上調(diào)用 console.dirxml() 等同于調(diào)用 console.log()芹敌。

console.error(object [, object, ...])
輸出一條類似于 console.log() 的消息痊远,將消息設(shè)置成錯誤樣式,并在調(diào)用此方法的地方包含一個堆疊追蹤党窜。

console.error(object [, object, ...])
輸出一條類似于 console.log() 的消息拗引,將消息設(shè)置成錯誤樣式,并在調(diào)用此方法的地方包含一個堆疊追蹤

console.group(object[, object, ...])
啟動一個帶有可選標(biāo)題的新日志組幌衣。以可視化方式將在 console.group() 后矾削、console.groupEnd() 前發(fā)生的所有控制臺輸出組合在一起;

console.groupCollapsed(object[, object, ...])創(chuàng)建一個初始處于折疊狀態(tài)而不是打開狀態(tài)的新日志組

console.groupEnd()關(guān)閉日志組

console.info(object [, object, ...]);;輸出一條類似 console.log() 的消息,但同時在輸出旁顯示一個圖標(biāo)(帶白色“i”的藍色圓圈)

console.log(object [, object, ...]);;在控制臺中顯示一條消息豁护。將一個或多個對象傳遞到此方法哼凯。每個對象都會進行評估并級聯(lián)到一個由空格分隔的字符串中

console.profile([label]);;啟動一個帶有可選標(biāo)簽的 JavaScript CPU 配置文件。要完成配置文件楚里,請調(diào)用 console.profileEnd()
每一個配置文件都會添加到 Profiles 面板中

console.profileEnd();;停止當(dāng)前的 JavaScript CPU 分析會話(如果正在進行此會話)断部,并將報告輸出到 Profiles 面板中。

console.time(label);;啟動一個具有關(guān)聯(lián)標(biāo)簽的新計時器班缎。使用相同標(biāo)簽調(diào)用 console.timeEnd() 時蝴光,定時器將停止,經(jīng)過的時間將顯示在控制臺中
計時器值精確到亞毫秒达址。傳遞到 time() 和 timeEnd() 的字符串必須匹配蔑祟,否則計時器不會結(jié)束

console.timeEnd(label)停止當(dāng)前的計時器(如果正在運行一個計時器),并將計時器標(biāo)簽和經(jīng)過的時間輸出到控制臺沉唠。

console.timeStamp([label]);;在錄制會話期間向 Timeline 添加一個事件

console.trace(object);;從調(diào)用此方法的位置輸出一個堆疊追蹤

console.warn(object [, object, ...])輸出一條類似 console.log() 的消息疆虚,但同時在記錄的消息旁顯示一個黃色警告圖標(biāo)
評估表達式

只需鍵入表達式即可對其進行評估。
按下 Enter 鍵后满葛,此控制臺可評估您提供的任何 JavaScript 表達式
輸入表達式后径簿,系統(tǒng)將顯示屬性名稱建議;控制臺還會提供自動填充和 Tab 自動補全功能

使用一個快捷鍵選擇元素嘀韧。

$() 返回與指定 CSS 選擇器匹配的第一個元素篇亭。 document.querySelector() 的快捷鍵。
$$() 返回一個與指定 CSS 選擇器匹配的所有元素數(shù)組锄贷。等同于 document.querySelectorAll()暗赶。
$x() 返回一個與指定 XPath 匹配的元素數(shù)組鄙币。

使用 inspect() 檢查 DOM 元素和 JavaScript 堆對象。

inspect() 函數(shù)選取一個 DOM 元素或 JavaScript 引用作為一個參數(shù)蹂随。
如果您提供一個 DOM 元素十嘿,則 DevTools 進入“Elements”面板并顯示該元素。如果您提供一個 JavaScript 引用岳锁,則它進入“Profile”面板绩衷。

當(dāng)此代碼在該頁面上的控制臺中執(zhí)行時,它會抓取此圖并在“Elements”面板上顯示它激率。
這會利用到 $_ 屬性以獲取最后一個評估的表達式的輸出咳燕。

使用 $0 - 4 訪問最近選擇的元素和對象

控制臺在變量中存儲最后使用的五個元素和對象,以方便訪問乒躺。使用 $0 - 4 從控制臺訪問這些元素
請記住招盲,計算機從 0 開始計算,這意味著最新的項目是 $0嘉冒,最早的項目是 $4

監(jiān)控事件

使用 monitorEvents() 偵聽特定類型的事件曹货。

第一個參數(shù)是要監(jiān)控的對象。如果不提供第二個參數(shù)讳推,所有事件都將返回顶籽。
若要指定要偵聽的事件,則傳遞一個字符串或一個字符串?dāng)?shù)組作為第二個參數(shù)
monitorEvents(document.body, "click");
如果監(jiān)控的事件是受支持的事件類型银觅,DevTools 將其映射到一組標(biāo)準(zhǔn)事件名稱礼饱,則該方法偵聽該類型的事件

使用 unmonitorEvents() 停止偵聽。

unmonitorEvents(document.body);

使用 getEventListeners() 獲取 DOM 元素的偵聽器究驴。

getEventListeners() API 返回在指定對象上注冊的事件偵聽器
getEventListeners(document);

使用“Event Listeners Inspector”面板獲取有關(guān)事件偵聽器的信息

Elements Inspector 中的 Event Listeners 面板顯示附加到頁面的所有事件

Command Line API 參考
$_:$_ 返回最近評估的表達式的值

$0 - $4:$0镊绪、$1、$2洒忧、$3 和 $4 命令用作在 Elements 面板中檢查的最后五個 DOM 元素或在 Profiles 面板中選擇的最后五個 JavaScript 堆對象的歷史參考蝴韭。
$0 返回最近一次選擇的元素或 JavaScript 對象,$1 返回僅在最近一次之前選擇的元素或?qū)ο笈苣剑来祟愅啤?在以下示例中,在 Elements 面板中選擇一個具有類 medium 的元素摧找。
在 Console 抽屜式導(dǎo)航欄中核行,$0 已評估,并顯示相同的元素

$(selector) 返回帶有指定的 CSS 選擇器的第一個 DOM 元素的引用蹬耘。此函數(shù)等同于 document.querySelector() 函數(shù)

$$(selector) 返回與給定 CSS 選擇器匹配的元素數(shù)組芝雪。此命令等同于調(diào)用 document.querySelectorAll()

$x(path) 返回一個與給定 XPath 表達式匹配的 DOM 元素數(shù)組

clear() 清除其歷史記錄的控制臺

copy(object) 將指定對象的字符串表示形式復(fù)制到剪貼板

debug(function):調(diào)用指定的函數(shù)時,將觸發(fā)調(diào)試程序综苔,并在 Sources 面板上使函數(shù)內(nèi)部中斷惩系,從而允許逐行執(zhí)行代碼并進行調(diào)試

dir(object) 顯示所有指定對象的屬性的對象樣式列表位岔。
此方法等同于 Console API 的 console.dir() 方法

dirxml(object) 輸出以 XML 形式表示的指定對象,如 Elements 標(biāo)簽中所示堡牡。
此方法等同于 console.dirxml() 方法

inspect(object/function) 在相應(yīng)的面板中打開并選擇指定的元素或?qū)ο螅横槍?DOM 元素使用 Elements 面板抒抬,或針對 JavaScript 堆對象使用 Profiles 面板

getEventListeners(object) 返回在指定對象上注冊的事件偵聽器

keys(object) 返回一個包含屬于指定對象的屬性名稱的數(shù)組。如需獲取相同屬性的關(guān)聯(lián)值晤柄,請使用 values()

monitor(function) 調(diào)用指定函數(shù)時擦剑,系統(tǒng)會向控制臺記錄一條消息,其中指明函數(shù)名稱及在調(diào)用時傳遞到該函數(shù)的參數(shù)

monitorEvents(object[, events])
當(dāng)在指定對象上發(fā)生一個指定事件時芥颈,將 Event 對象記錄到控制臺惠勒。
您可以指定一個要監(jiān)控的單獨事件、一個事件數(shù)組或一個映射到預(yù)定義事件集合的常規(guī)事件“類型
以下命令監(jiān)控 window 對象上的所有 resize 事件  
monitorEvents(window, "resize");

profile() 使用可選的名稱啟動一個 JavaScript CPU 分析會話爬坑。
profileEnd() 在 Profile 面板中完成分析纠屋,并顯示結(jié)果

table(data[, columns])通過傳入含可選列標(biāo)題的數(shù)據(jù)對象記錄具有表格格式的對象數(shù)據(jù)

undebug(function) 可停止調(diào)試指定函數(shù),以便在調(diào)用函數(shù)時盾计,不再調(diào)用調(diào)試程序

unmonitor(function) unmonitor(function) 可停止監(jiān)控指定函數(shù)售担。它可與 monitor(fn) 結(jié)合使用

unmonitorEvents(object[, events]) 可停止針對指定對象和事件的事件監(jiān)控

values(object) 返回一個包含屬于指定對象的所有屬性值的數(shù)組

五.檢查和管理存儲、數(shù)據(jù)庫與緩存

Application.png

六闯估、進階版--開發(fā)常用使用實例

1.選取DOM元素

$$('id或者class')

2.所見即所得

document.body.contentEditable=true
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末灼舍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涨薪,更是在濱河造成了極大的恐慌骑素,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刚夺,死亡現(xiàn)場離奇詭異献丑,居然都是意外死亡,警方通過查閱死者的電腦和手機侠姑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門创橄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莽红,你說我怎么就攤上這事妥畏。” “怎么了安吁?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵醉蚁,是天一觀的道長。 經(jīng)常有香客問我鬼店,道長网棍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任妇智,我火速辦了婚禮滥玷,結(jié)果婚禮上氏身,老公的妹妹穿的比我還像新娘。我一直安慰自己惑畴,他們只是感情好蛋欣,可當(dāng)我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桨菜,像睡著了一般豁状。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上倒得,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天泻红,我揣著相機與錄音,去河邊找鬼霞掺。 笑死谊路,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的菩彬。 我是一名探鬼主播缠劝,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骗灶!你這毒婦竟也來了惨恭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耙旦,失蹤者是張志新(化名)和其女友劉穎脱羡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體免都,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡锉罐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绕娘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脓规。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖险领,靈堂內(nèi)的尸體忽然破棺而出侨舆,到底是詐尸還是另有隱情,我是刑警寧澤绢陌,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布挨下,位于F島的核電站,受9級特大地震影響下面,放射性物質(zhì)發(fā)生泄漏复颈。R本人自食惡果不足惜绩聘,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一沥割、第九天 我趴在偏房一處隱蔽的房頂上張望耗啦。 院中可真熱鬧,春花似錦机杜、人聲如沸帜讲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽似将。三九已至,卻和暖如春蚀苛,著一層夾襖步出監(jiān)牢的瞬間在验,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工堵未, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腋舌,地道東北人。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓渗蟹,卻偏偏與公主長得像块饺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子雌芽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容