console-panel
A console panel within web page to help in the following use-cases:
- Get notification on console messages
- Console logging on mobile and tablet devices
- Console logging on Microsoft Edge / Internet Explorer (without opening native Developer Tools)
Demo
Click here to view online demo.
How to use
Files to include
Minimal setup
In your HTML file, add the following tags:
<link rel="stylesheet" href="console-panel.css" />
<script src="console-panel.js"></script>
<script>
consolePanel.enable();
</script>
Full-featured setup
In your HTML file, add the following tags:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/RickStrahl/jquery-resizable@0.32/dist/jquery-resizable.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/native-promise-only/0.8.1/npo.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jsoneditor/5.26.2/jsoneditor.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsoneditor/5.26.2/jsoneditor-minimalist.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/themes/prism.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/prism.min.js" data-manual></script>
<link rel="stylesheet" href="console-panel.css" />
<script src="console-panel.js"></script>
<script>
consolePanel.enable();
</script>
API
consolePanel.enable(config)
This will initiate the interception logic based on the configuration options and activate console-panel as requested.
Configuration options
position
Summary: Position of console-panel's icon
Type: string
Supported positions: "top-left"
, "top-right"
, "bottom-left"
, "bottom-right"
Default value: "bottom-right"
Example value: "top-right"
functionsToIntercept
Summary: List of console functions which should be intercepted
Type: <falsy-value>
OR string "all"
OR array (of strings)
Supported function names: "window.onerror"
, "console.error"
, "console.warn"
, "console.info"
, "console.log"
Default value: "all"
,
Example value: ["window.onerror", "console.error"]
Notes: console.clear()
would always get intercepted when consolePanel.enable(config)
is called
showOnlyForTheseRelevantMessages
Summary: List of console function calls for which console-panel icon should be shown
Type: <falsy-value>
OR string "all"
OR array (of strings)
Supported function names: "window.onerror"
, "console.error"
, "console.warn"
, "console.info"
, "console.log"
Default value: null
Example value: ["window.onerror", "console.error", "console.warn"]
Notes: If it is a <falsy-value>
, then console-panel notification icon would be shown all the time
strongNotificationFor
Summary: List of console function calls for which console-panel notification should be shown strongly
Type: <falsy-value>
OR array (of strings)
Supported function names: "window.onerror"
, "console.error"
, "console.warn"
, "console.info"
, "console.log"
Default value: ["window.onerror", "console.error"]
Example value: ["window.onerror", "console.error", "console.warn"]
skipStrongNotificationIfNoStackTrace
Summary: When it is set as true, "strong-notification" effect is not shown for errors for which stack trace is not available. This can be used to avoid highlighting errors which are occurring due to a cross-origin / third-party script.
Type: boolean
Allowed values: <falsy-value>
OR <truthy-value>
Default value: false
Example value: false
reportLogLines
Summary: When it is set as true
, the corresponding code line is mentioned along with each console entry. When it is set as true
, it may interrupt your debugging session if you are using the "Pause on caught exceptions" feature in browser DevTools
Type: boolean
Allowed values: <falsy-value>
OR <truthy-value>
Default value: true
Example value: true
doNotUseWhenDevToolsMightBeOpenInTab
Summary: Disable console-panel if browser DevTools might be open within the tab
Type: boolean
Allowed values: <falsy-value>
OR <truthy-value>
Default value: false
Example value: false
Reference: https://github.com/sindresorhus/devtools-detect#support
disableButtonTitle
Summary: Customize the title for the "disable" button in console-panel
Type: string
Allowed values: Any non-empty string
Default value: "Disable for this instance"
Example value: "Disable\n(and keep disabled)"
beforeDisableButtonClick
Summary: Function to be called before performing the default action for "disable" button
Type: function
Example value: function () { localStorage['console-panel-status'] = 'disabled'; }
Notes: If this function returns boolean false
, then the default action would not be performed
Examples
consolePanel.enable();
consolePanel.enable({
functionsToIntercept: ['window.onerror', 'console.error']
});
consolePanel.enable({
doNotUseWhenDevToolsMightBeOpenInTab: true
});
consolePanel.enable({
showOnlyForTheseRelevantMessages: 'all'
});
consolePanel.enable({
strongNotificationFor: 'all'
});
consolePanel.enable({
reportLogLines: false
});
consolePanel.enable({
skipStrongNotificationIfNoStackTrace: true
});
if (localStorage['console-panel-status'] !== 'disabled') {
consolePanel.enable({
disableButtonTitle: 'Disable\n(and keep disabled)',
beforeDisableButtonClick: function () {
localStorage['console-panel-status'] = 'disabled';
}
});
}
consolePanel.disable()
If you wish to deactivate console-panel, run consolePanel.disable()
. It will restore the intercepted functions to their original state.
Browser support
Google Chrome
Microsoft Edge (and Internet Explorer)
Mozilla Firefox
Opera
Limitations / notable behavior
console.clear()
is always intercepted whenever consolePanel.enable()
is called.
- In Microsoft Edge (EdgeHTML) and Internet Explorer, the console functions are
not intercepted if the browser's native Developer Tools are in activated state
(
window.onerror
can still be intercepted). Also, for these browsers, if the
native Developer Tools have been opened once, then the intercepted calls to the
console logging function calls are absorbed (rather than intercepted).
- During a page load, if
consolePanel.enable(config)
has already been called once,
then calling consolePanel.enable(config_new)
with a different config may not work
well for all the cases.
TODO
TODO.md
Alternative solutions you may like
Remote debugging
vConsole
A lightweight, extendable front-end developer tool for mobile web page (https://github.com/Tencent/vConsole)
Firebug Lite
In your HTML file, add the following tags:
<script src="https://getfirebug.com/firebug-lite.js"></script>
<script>
firebug.init();
</script>
References:
About this project
Author
Connect to us
License