控制台 Utilities API 包含一組便利函式,可用於執行常見工作,包括選取及檢查 DOM 元素、查詢物件、以可讀取的格式顯示資料、停止和啟動分析器、監控 DOM 事件和函式呼叫等。
正在尋找 console.log()
、console.error()
和其他 console.*
函式嗎?請參閱 Console API 參考資料。
$_
$_
會傳回最近評估的運算式的值。
在以下範例中,評估的簡單運算式 (2 + 2
)。接著,系統會評估 $_
屬性,該屬性含有相同的值:
在下一個範例中,評估的運算式一開始含有名稱陣列。評估 $_.length
找出陣列的長度,系統會將儲存在 $_
中的值變更為最新的評估運算式,4:
NT$0 - NT$120 元
在「Elements」面板中檢查的最後五個 DOM 元素,或「Profile」面板中最後選取的五個 JavaScript 堆積物件,$0
、$1
、$2
、$3
和 $4
指令可做為過往的參照資料。$0
會傳回最新選取的元素或 JavaScript 物件,$1
會傳回最近選取完成的第二個元素,依此類推。
在以下範例中,系統會選取「Elements」面板中的 img
元素。在「Console」導覽匣中,$0
已完成評估,並顯示相同的元素:
下圖顯示了在同一個頁面中選取的不同元素。$0
現在參照新選取的元素,而 $1
會傳回先前選取的元素:
$(selector [, startNode])
$(selector)
會傳回指定 CSS 選取器的第一個 DOM 元素參照。當呼叫單一引數時,此函式是 document.querySelector() 函式的捷徑。
以下範例會傳回文件中第一個 <img>
元素的參照:
在傳回的結果上按一下滑鼠右鍵,然後選取「Reveal in Elements Panel」(顯示在元素面板中),即可在 DOM 中尋找;或是捲動查看,以便在該頁面上顯示結果。
以下範例會傳回目前所選元素的參照,並顯示其 src
屬性:
這個函式也支援第二個參數 startNode
,用於指定用於搜尋元素的「元素」或節點。此參數的預設值為 document
。
以下範例會傳回第一個 img
元素的參照,該元素是 devsite-header-background
的子系,並顯示其 src
屬性:
$$(selector [, startNode])
以下範例使用 $$(選取器) 會傳回與指定 CSS 選取器相符的元素陣列。這個指令等同於呼叫
Array.from(document.querySelectorAll())
。
$$()
to create an array of all <img>
elements in the current document
and displays the value of each element's src
property:let images = $$('img');
for (let each of images) {
console.log(each.src);
}
l10n-placeholder3() 建立陣列,其中包含在所選節點之後,目前文件中會顯示的所有 <img>
元素:
let images = $$('img', document.querySelector('.devsite-header-background'));
for (let each of images) {
console.log(each.src);
}
$x(path [, startNode])
$x(path)
會傳回符合指定 XPath 運算式的 DOM 元素陣列。
例如,以下程式碼會傳回網頁上的所有 <p>
元素:
$x("//p")
以下範例會傳回包含 <a>
元素的所有 <p>
元素:
$x("//p[a]")
與其他選取器函式類似,$x(path)
具有選用的第二個參數 startNode
,用於指定要在其中搜尋元素的元素或節點。
clear()
clear()
會清除控制台的記錄。
clear();
Copy(物件)
copy(object)
會將指定物件的字串表示法複製到剪貼簿。
copy($0);
debug(函式)
呼叫指定函式時,系統會叫用偵錯工具,並在「Sources」面板的函式中中斷,以逐步執行程式碼並進行偵錯。
debug(getData);
使用 undebug(fn)
來停止函式的中斷,或使用 UI 停用所有中斷點。
如要進一步瞭解中斷點,請參閱「使用中斷點暫停程式碼」。
dir(object)
dir(object)
會顯示所有指定物件屬性的物件樣式清單。這個方法是主控台 API console.dir()
方法的捷徑。
以下範例顯示直接在指令列中評估 document.body
,以及使用 dir()
顯示相同元素的差異:
document.body;
dir(document.body);
詳情請參閱 Console API 中的 console.dir()
項目。
dirxml(物件)
dirxml(object)
會輸出指定物件的 XML 表示法,如「Elements」面板所示。此方法相當於 console.dirxml()
方法。
inspect(object/function)
inspect(object/function)
會隨即開啟,並在適當的面板中選取指定的元素或物件:DOM 元素的「Elements」(元素) 面板或 JavaScript 堆積物件的「Profile」面板。
以下範例會在「Elements」面板中開啟 document.body
:
inspect(document.body);
傳遞要檢查的函式時,函式會在「Sources」面板中開啟文件供您檢查。
getEventListeners(object)
getEventListeners(object)
會傳回已在指定物件上註冊的事件監聽器。傳回值是一個物件,其中包含每個已註冊事件類型 (例如 click
或 keydown
) 的陣列。每個陣列的成員都是物件,用來描述每種類型註冊的事件監聽器。舉例來說,以下程式碼會列出在文件物件上註冊的所有事件監聽器:
getEventListeners(document);
如果指定物件上註冊了多個事件監聽器,陣列會包含每個事件監聽器的成員。在以下範例中,有兩個事件監聽器是在 click
事件的文件元素上註冊:
您可透過以下方式進一步展開每個物件,探索其屬性:
詳情請參閱「檢查物件屬性」。
鍵(物件)
keys(object)
會傳回陣列,其中包含指定物件的屬性名稱。如要取得相同屬性的相關值,請使用 values()
。
例如,假設應用程式定義了下列物件:
let player = {
"name": "Parzival",
"number": 1,
"state": "ready",
"easterEggs": 3
};
假設 player
是在全域命名空間中定義 (為簡單),在「Console」中輸入 keys(player)
和 values(player)
,將產生以下結果:
monitor(function)
呼叫指定的函式時,系統會將訊息記錄到主控台,該訊息會指出函式名稱,以及呼叫函式時傳遞至函式的引數。
function sum(x, y) {
return x + y;
}
monitor(sum);
使用 unmonitor(function)
停止監控。
monitorEvents(object [, events])
當指定物件發生其中一個指定事件時,事件物件會記錄在控制台中。您可以指定要監控的單一事件、一個事件陣列,或是對應到預先定義的事件集合的其中一個一般事件「類型」。請參閱以下範例。
下列程式碼會監控視窗物件的所有大小調整事件。
monitorEvents(window, "resize");
以下定義要監控視窗物件上「調整大小」和「捲動」事件的陣列:
monitorEvents(window, ["resize", "scroll"])
您也可以指定其中一種可用事件「類型」,也就是對應至預先定義事件集的字串。下表列出可用的事件類型及相關的事件對應:
事件類型和相應的對應事件 | |
---|---|
老鼠 | 「mousedown」、「mouseup」、「click」、「dblclick」、「mousemove」、「mouseover」、「mouseout」、「mousewheel」 |
金鑰 | 「keydown」、「keyup」、「keypress」、「textInput」 |
觸控輸入 | 「touchstart」、「touchmove」、「touchend」、「touchcancel」 |
控管 | 「resize」、「scroll」、「縮放」、「聚焦」、「模糊」、「選取」、「變更」、「提交」、「重設」、「重設」 |
舉例來說,以下範例使用「key」事件類型,在「Elements」面板中目前選取的輸入文字欄位中所有對應的重要事件。
monitorEvents($0, "key");
以下是在文字欄位中輸入字元後輸出的範例:
使用 unmonitorEvents(object[, events])
停止監控。
profile([name]) 和 profileEnd([name])
profile()
會使用選用名稱啟動 JavaScript CPU 剖析工作階段。profileEnd()
會完成設定檔,並在「Performance」 >「Main」測試群組中顯示結果。
如何開始剖析:
profile("Profile 1")
如要停止剖析,並在「Performance」 >「Main」測試群組中查看結果:
profileEnd("Profile 1")
「Performance」 >「Main」測試群組的結果:
主要軌道。" width="800" height="606">
或者,您也可以建立巢狀設定檔。舉例來說,上述方法以任何順序運作:
profile('A');
profile('B');
profileEnd('A');
profileEnd('B');
queryObjects(Constructor)
從主控台呼叫 queryObjects(Constructor)
,即可傳回以指定建構函式建立的物件陣列。例如:
queryObjects(Promise)
。傳回Promise
的所有例項。queryObjects(HTMLElement)
。傳回所有 HTML 元素。queryObjects(foo)
,其中foo
是類別名稱。傳回透過new foo()
執行個體化的所有物件。
queryObjects()
的範圍是主控台目前選取的執行環境。
table(資料 [, 欄])
傳入含有選用欄標題的資料物件,以設定資料表格式記錄物件資料。
這是 console.table()
的快速鍵。
例如,如要在控制台中使用資料表顯示名稱清單,您可以:
let names = [
{ firstName: "John", lastName: "Smith" },
{ firstName: "Jane", lastName: "Doe" },
];
table(names);
undebug(function) 鍵
undebug(function)
會停止對指定函式的偵錯作業,因此在呼叫函式時,系統就不會再叫用偵錯工具。這會與 debug(fn)
搭配使用。
undebug(getData);
unMonitor(function)
unmonitor(function)
會停止監控指定函式。這會搭配 monitor(fn)
使用。
unmonitor(getData);
unmonitorEvents(object [, events])
unmonitorEvents(object[, events])
會停止監控指定物件和事件的事件。例如,以下程式碼會停止視窗物件的所有事件監控:
unmonitorEvents(window);
您也可以選擇性停止監控物件中的特定事件。例如,以下程式碼會開始監控目前所選元素中的所有滑鼠事件,然後停止監控「mousemove」事件 (可能藉此減少主控台輸出的雜訊):
monitorEvents($0, "mouse");
unmonitorEvents($0, "mousemove");
values(物件)
values(object)
會傳回陣列,其中包含指定物件中所有屬性的值。
let player = {
"name": "Parzival",
"number": 1,
"state": "ready",
"easterEggs": 3
};
values(player);