控制臺 API 為 Web 應用程序提供輸入信息到控制臺、創(chuàng)建 JavaScript 文件和啟動調試會話的方法。
如果指定表達式返回 false,返回結果會隨著一個棧跟蹤器輸入到控制臺上。在接下來的示例中,只要當文檔中包含的子節(jié)點少于 10 個,斷言消息才會被輸入到控制臺。
var list = document.querySelector('#myList');
console.assert(list.childNodes.length < 10, "List item count is >= 10");
清除控制臺
console.clear();
同樣在清除控制臺可見。
但是,如果 Preserve Logs 是開啟狀態(tài),當一些框架調用 console.clear()
時,它不會做任何事,這會讓你的調試過程變得更難。"Clear console"在主菜單還是依然起作用的,能清除控制臺的信息。
這個函數輸出 count()
在同一行用同一個標簽調用的次數。
下面例子中 每次 login()
函數被調用時, count()
也同樣被調用。
function login(user) { console.count("Login called"); // login() code...}
在這個例子中,count()
在不同的標簽里被調用,每次返回結果都是單獨增加(不會累加)。
function login(user) { console.count("Login called for user '" + user + "'"); // login() code...}
這種方法是與 console.log()
相同的。
輸出指定對象的 JavaScript 的描述. 如果被記錄的對象是一個 HTML 元素,那么它的 DOM 對象的屬性被輸出顯示,示例如下:
console.dir(document.body);
你也可以在一個 console.log()
語句中使用對象制式(%0)來輸出一個元素的 JavaScript 屬性:
console.log("document body: %O", document.body);
在 JavaScript 對象上調用 console.dir()
同在相同對象上調用 console.log() 是等效的。他們都以樹的形式輸出對象的 Javascript 屬性。
將它與 console.log()
的執(zhí)行進行對比,console.log()
會以 XML 的格式輸出元素,輸出在 Elements 面板中:
console.log(document.body);
輸出一個指定對象的 XML 形式,它會在 Elements 面板中顯示。對于 HTML 元素來講,調用這個方法同調用 console.log()
是等價的。
var list = document.querySelector("#myList");console.dirxml();
%0
是 dir 的簡寫%o
是和 dir 一樣還是和 dirxnl 一樣取決于對象類型(無 DOM 或 DOM)與 console.log() 、console.error()
相似,在該方法被調用的地方同樣包括一個棧追蹤器。
function connectToServer() { var errorCode = 1; if (errorCode) { console.error("Error: %s (%i)", "Server is not responding", 500); }}connectToServer();
以可選標題項開始一個新的記錄組。調用此方法后再調用 console.groupEnd()
后,所有控制臺輸出輸出在同一個視組。
console.group("Authenticating user '%s'", user);console.log("User authenticated");console.groupEnd();
你也可以嵌套組:
// New group for authentication:console.group("Authenticating user '%s'", user);// later...console.log("User authenticated", user);// A nested group for authorization:console.group("Authorizing user '%s'", user);console.log("User authorized");console.groupEnd();console.groupEnd();
創(chuàng)建一個初始閉合而不是開放的記錄組,就像用 console.group()
一樣
console.groupCollapsed("Authenticating user '%s'", user);console.log("User authenticated");console.groupEnd();console.log("A group-less log trace.");
關閉最近用 console.group()
或 console.groupCollapsed()
創(chuàng)建的記錄組。見 console.group() 和 console.groupCollapsed() 的例子。
這個方法與 console.log() 是等效的
這個方法在控制臺輸出消息。傳遞一個或多個對象作為這個方法的參數,每一個對象被單獨計算并連接成一個空間分隔的字符串。你傳入 log()
的第一個參數,可能包含格式說明(format specifiers)。一個標記字符串由百分號(%),接著一個字母,來表示要應用的格式。
DevTools 支持以下格式說明:
name | age |
---|---|
%s | 字符串格式 |
%d or %i | 整型格式 |
%f | 浮點數格式 |
%o | 可擴展的 DOM 元素(在 Elements 面板里)格式 |
%O | 可擴展的 Javascript 對象格式 |
%c | 以你提供的 CSS 樣式的格式輸出 |
基本的例子:
console.log("App started");
下面是使用字符串(%s)和整數(%d)格式說明插入所包含的變量 userName 和 userPoints 值的例子:
console.log("User %s has %d points", userName, userPoints);
下面是一個在相同 DOM 元素中使用元素格式 (%o) 和對象格式 (%0) 的例子:
console.log("%o, %O", document.body, document.body);
下面的示例使用 %c 格式說明上色的輸出字符串:
console.log("%cUser %s has %d points", "color:orange; background:blue; font-size: 16pt", userName, userPoints);
當 Chrome DevTools 被打開,用一個可選標簽調用這個函數來開啟一個 JavaScript CPU 狀態(tài)分析。為了完成這個分析,調用 console.profileEnd()
方法. 每個分析結果都會被添加到 Profiles 選項卡中。
在下面的實例中,CPU 狀態(tài)分析在一個函數入口開始,從而消耗過多的 CPU 資源,而當函數退出時,狀態(tài)分析也隨之結束。
function processPixels() { console.profile("Processing pixels"); // later, after processing pixels console.profileEnd();}
只有一個會話進行時,停止當前 CPU 的 JavaScript 分析會話,并且輸出結果到 Profiles 面板。
console.profileEnd()
見 console.profile() 有更多使用示例。
開始一個新的計時器,與標簽關聯。當 console.timeEnd()
被相同的標簽調用時,計時器停止計時,在控制臺中顯示的經過時間。計時器的值精確到亞毫秒級。
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");
注意:傳遞給 time() 和 timeEnd() 方法的字符串必須與定時器預期的結束返回的值相符。
停止指定標簽的計時器,輸出經過的時間。
使用實例,見 console.time()
這個方法在記錄期間增加了一個事件到時間軸。這可以讓你直觀地在時間戳上關聯生成的代碼到其他事件上,如屏幕布局和繪制,這些都被自動添加到時間軸上。
使用 console.timeStamp() 標記時間軸的。
輸出從這個方法被調用的那個點的棧追蹤路徑,包括在 Javascript 源代碼中指向特定行的鏈接。計數器輸出 trace()
方法在那個點被調用的次數,如下圖屏幕顯示的一樣。
向 trace
中傳入參數也是可能的,例如:
這個方法和 console.log() 很像,但也輸出帶有黃色警告圖標的日志消息。
console.warn("User limit reached! (%d)", userPoints);
全局調試 (debugger) 功能使 Chrome 停止程序的執(zhí)行,并在它被調用的行啟動一個調試會話。它相當于在 Chrome DevTools 的 Sources 選項卡設置 “手動” 斷點。
注意:debugger 命令不是控制臺對象的方法。
在下面的示例中, 當一個對象的 brightness()
方法被調用 JavaScript 調試器被打開:
brightness : function() { debugger; var r = Math.floor(this.red*255); var g = Math.floor(this.green*255); var b = Math.floor(this.blue*255); return (r * 77 + g * 150 + b * 29) >> 8;}
更多建議: