⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 console.js

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 JS
📖 第 1 页 / 共 3 页
字号:
        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 + -