📄 console.js
字号:
this.visible = !this.visible; }, _clearButtonClicked: function() { this.clearMessages(true); }, _messagesSelectStart: function(event) { if (this._selectionTimeout) clearTimeout(this._selectionTimeout); this.prompt.clearAutoComplete(); function moveBackIfOutside() { delete this._selectionTimeout; if (!this.prompt.isCaretInsidePrompt() && window.getSelection().isCollapsed) this.prompt.moveCaretToEndOfPrompt(); this.prompt.autoCompleteSoon(); } this._selectionTimeout = setTimeout(moveBackIfOutside.bind(this), 100); }, _messagesClicked: function(event) { var link = event.target.enclosingNodeOrSelfWithNodeName("a"); if (!link || !link.representedNode) return; WebInspector.updateFocusedNode(link.representedNode); event.stopPropagation(); event.preventDefault(); }, _promptKeyDown: function(event) { switch (event.keyIdentifier) { case "Enter": this._enterKeyPressed(event); return; } this.prompt.handleKeyEvent(event); }, _startStatusBarDragging: function(event) { if (!this.visible || event.target !== document.getElementById("main-status-bar")) return; WebInspector.elementDragStart(document.getElementById("main-status-bar"), this._statusBarDragging.bind(this), this._endStatusBarDragging.bind(this), event, "row-resize"); this._statusBarDragOffset = event.pageY - this.element.totalOffsetTop; event.stopPropagation(); }, _statusBarDragging: function(event) { var mainElement = document.getElementById("main"); var height = window.innerHeight - event.pageY + this._statusBarDragOffset; height = Number.constrain(height, Preferences.minConsoleHeight, window.innerHeight - mainElement.totalOffsetTop - Preferences.minConsoleHeight); mainElement.style.bottom = height + "px"; this.element.style.height = height + "px"; event.preventDefault(); event.stopPropagation(); }, _endStatusBarDragging: function(event) { WebInspector.elementDragEnd(event); delete this._statusBarDragOffset; event.stopPropagation(); }, _evalInInspectedWindow: function(expression) { if (WebInspector.panels.scripts && WebInspector.panels.scripts.paused) return WebInspector.panels.scripts.evaluateInSelectedCallFrame(expression); var inspectedWindow = InspectorController.inspectedWindow(); if (!inspectedWindow._inspectorCommandLineAPI) { inspectedWindow.eval("window._inspectorCommandLineAPI = { \ $: function() { return document.getElementById.apply(document, arguments) }, \ $$: function() { return document.querySelectorAll.apply(document, arguments) }, \ $x: function(xpath, context) { \ var nodes = []; \ try { \ var doc = context || document; \ var results = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); \ var node; \ while (node = results.iterateNext()) nodes.push(node); \ } catch (e) {} \ return nodes; \ }, \ dir: function() { return console.dir.apply(console, arguments) }, \ dirxml: function() { return console.dirxml.apply(console, arguments) }, \ keys: function(o) { var a = []; for (k in o) a.push(k); return a; }, \ values: function(o) { var a = []; for (k in o) a.push(o[k]); return a; }, \ profile: function() { return console.profile.apply(console, arguments) }, \ profileEnd: function() { return console.profileEnd.apply(console, arguments) } \ };"); inspectedWindow._inspectorCommandLineAPI.clear = InspectorController.wrapCallback(this.clearMessages.bind(this)); } // Surround the expression in with statements to inject our command line API so that // the window object properties still take more precedent than our API functions. expression = "with (window._inspectorCommandLineAPI) { with (window) { " + expression + " } }"; return inspectedWindow.eval(expression); }, _enterKeyPressed: function(event) { if (event.altKey) return; event.preventDefault(); event.stopPropagation(); this.prompt.clearAutoComplete(true); var str = this.prompt.text; if (!str.length) return; var commandMessage = new WebInspector.ConsoleCommand(str); this.addMessage(commandMessage); var result; var exception = false; try { result = this._evalInInspectedWindow(str); } catch(e) { result = e; exception = true; } this.prompt.history.push(str); this.prompt.historyOffset = 0; this.prompt.text = ""; this.addMessage(new WebInspector.ConsoleCommandResult(result, exception, commandMessage)); }, _format: function(output, forceObjectFormat) { var type = (forceObjectFormat ? "object" : Object.type(output, InspectorController.inspectedWindow())); // We don't perform any special formatting on these types, so we just // pass them through the simple _formatvalue function. var undecoratedTypes = { "undefined": 1, "null": 1, "boolean": 1, "number": 1, "date": 1, "function": 1, }; var formatter; if (forceObjectFormat) formatter = "_formatobject"; else if (type in undecoratedTypes) formatter = "_formatvalue"; else { formatter = "_format" + type; if (!(formatter in this)) { formatter = "_formatobject"; type = "object"; } } var span = document.createElement("span"); span.addStyleClass("console-formatted-" + type); this[formatter](output, span); return span; }, _formatvalue: function(val, elem) { elem.appendChild(document.createTextNode(val)); }, _formatstring: function(str, elem) { elem.appendChild(document.createTextNode("\"" + str + "\"")); }, _formatregexp: function(re, elem) { var formatted = String(re).replace(/([\\\/])/g, "\\$1").replace(/\\(\/[gim]*)$/, "$1").substring(1); elem.appendChild(document.createTextNode(formatted)); }, _formatarray: function(arr, elem) { elem.appendChild(document.createTextNode("[")); for (var i = 0; i < arr.length; ++i) { elem.appendChild(this._format(arr[i])); if (i < arr.length - 1) elem.appendChild(document.createTextNode(", ")); } elem.appendChild(document.createTextNode("]")); }, _formatnode: function(node, elem) { var treeOutline = new WebInspector.ElementsTreeOutline(); treeOutline.rootDOMNode = node; treeOutline.element.addStyleClass("outline-disclosure"); if (!treeOutline.children[0].hasChildren) treeOutline.element.addStyleClass("single-node"); elem.appendChild(treeOutline.element); }, _formatobject: function(obj, elem) { elem.appendChild(new WebInspector.ObjectPropertiesSection(obj, null, null, null, true).element); }, _formaterror: function(obj, elem) { var messageElement = document.createElement("span"); messageElement.className = "error-message"; messageElement.textContent = obj.name + ": " + obj.message; elem.appendChild(messageElement); if (obj.sourceURL) { var urlElement = document.createElement("a"); urlElement.className = "webkit-html-resource-link"; urlElement.href = obj.sourceURL; urlElement.lineNumber = obj.line; urlElement.preferredPanel = "scripts"; if (obj.line > 0) urlElement.textContent = WebInspector.displayNameForURL(obj.sourceURL) + ":" + obj.line; else urlElement.textContent = WebInspector.displayNameForURL(obj.sourceURL); elem.appendChild(document.createTextNode(" (")); elem.appendChild(urlElement); elem.appendChild(document.createTextNode(")")); } },}WebInspector.Console.prototype.__proto__ = WebInspector.View.prototype;WebInspector.ConsoleMessage = function(source, level, line, url, groupLevel, repeatCount){ this.source = source; this.level = level; this.line = line; this.url = url; this.groupLevel = groupLevel; this.repeatCount = repeatCount; switch (this.level) { case WebInspector.ConsoleMessage.MessageLevel.Trace: var span = document.createElement("span"); span.addStyleClass("console-formatted-trace"); var stack = Array.prototype.slice.call(arguments, 6); var funcNames = stack.map(function(f) { return f || WebInspector.UIString("(anonymous function)"); }); span.appendChild(document.createTextNode(funcNames.join("\n"))); this.formattedMessage = span; break; case WebInspector.ConsoleMessage.MessageLevel.Object: this.formattedMessage = this._format(["%O", arguments[6]]); break; default: this.formattedMessage = this._format(Array.prototype.slice.call(arguments, 6)); break; } // This is used for inline message bubbles in SourceFrames, or other plain-text representations. this.message = this.formattedMessage.textContent;}WebInspector.ConsoleMessage.prototype = { isErrorOrWarning: function() { return (this.level === WebInspector.ConsoleMessage.MessageLevel.Warning || this.level === WebInspector.ConsoleMessage.MessageLevel.Error); }, _format: function(parameters) { var formattedResult = document.createElement("span"); if (!parameters.length) return formattedResult; function formatForConsole(obj) { return WebInspector.console._format(obj); } function formatAsObjectForConsole(obj) { return WebInspector.console._format(obj, true); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -