summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2021-11-22 14:03:19 +0100
committerPierre Ossman <ossman@cendio.se>2021-11-22 14:03:59 +0100
commitc143a852b15b2128c879f2471b5c9b7ee22805e8 (patch)
tree1be54f47c7e56844ae56fb1b82d9c4e059577594
parent2f602da96145f02b7765916ac8abfb5022097c29 (diff)
downloadnovnc-c143a852b15b2128c879f2471b5c9b7ee22805e8.tar.gz
Convert error handler to ES6 module
We no longer support older browsers, so this is not allowed to use modern features.
-rw-r--r--app/error-handler.js104
-rw-r--r--vnc.html2
2 files changed, 48 insertions, 58 deletions
diff --git a/app/error-handler.js b/app/error-handler.js
index f956c22..e9ce68e 100644
--- a/app/error-handler.js
+++ b/app/error-handler.js
@@ -6,67 +6,57 @@
* See README.md for usage and integration instructions.
*/
-// NB: this should *not* be included as a module until we have
-// native support in the browsers, so that our error handler
-// can catch script-loading errors.
-
-// No ES6 can be used in this file since it's used for the translation
-/* eslint-disable prefer-arrow-callback */
-
-(function _scope() {
- "use strict";
-
- // Fallback for all uncought errors
- function handleError(event, err) {
- try {
- const msg = document.getElementById('noVNC_fallback_errormsg');
-
- // Work around Firefox bug:
- // https://bugzilla.mozilla.org/show_bug.cgi?id=1685038
- if (event.message === "ResizeObserver loop completed with undelivered notifications.") {
- return false;
- }
-
- // Only show the initial error
- if (msg.hasChildNodes()) {
- return false;
- }
+// Fallback for all uncought errors
+function handleError(event, err) {
+ try {
+ const msg = document.getElementById('noVNC_fallback_errormsg');
+
+ // Work around Firefox bug:
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1685038
+ if (event.message === "ResizeObserver loop completed with undelivered notifications.") {
+ return false;
+ }
- let div = document.createElement("div");
- div.classList.add('noVNC_message');
- div.appendChild(document.createTextNode(event.message));
- msg.appendChild(div);
+ // Only show the initial error
+ if (msg.hasChildNodes()) {
+ return false;
+ }
- if (event.filename) {
- div = document.createElement("div");
- div.className = 'noVNC_location';
- let text = event.filename;
- if (event.lineno !== undefined) {
- text += ":" + event.lineno;
- if (event.colno !== undefined) {
- text += ":" + event.colno;
- }
+ let div = document.createElement("div");
+ div.classList.add('noVNC_message');
+ div.appendChild(document.createTextNode(event.message));
+ msg.appendChild(div);
+
+ if (event.filename) {
+ div = document.createElement("div");
+ div.className = 'noVNC_location';
+ let text = event.filename;
+ if (event.lineno !== undefined) {
+ text += ":" + event.lineno;
+ if (event.colno !== undefined) {
+ text += ":" + event.colno;
}
- div.appendChild(document.createTextNode(text));
- msg.appendChild(div);
- }
-
- if (err && err.stack) {
- div = document.createElement("div");
- div.className = 'noVNC_stack';
- div.appendChild(document.createTextNode(err.stack));
- msg.appendChild(div);
}
+ div.appendChild(document.createTextNode(text));
+ msg.appendChild(div);
+ }
- document.getElementById('noVNC_fallback_error')
- .classList.add("noVNC_open");
- } catch (exc) {
- document.write("noVNC encountered an error.");
+ if (err && err.stack) {
+ div = document.createElement("div");
+ div.className = 'noVNC_stack';
+ div.appendChild(document.createTextNode(err.stack));
+ msg.appendChild(div);
}
- // Don't return true since this would prevent the error
- // from being printed to the browser console.
- return false;
+
+ document.getElementById('noVNC_fallback_error')
+ .classList.add("noVNC_open");
+ } catch (exc) {
+ document.write("noVNC encountered an error.");
}
- window.addEventListener('error', function onerror(evt) { handleError(evt, evt.error); });
- window.addEventListener('unhandledrejection', function onreject(evt) { handleError(evt.reason, evt.reason); });
-})();
+ // Don't return true since this would prevent the error
+ // from being printed to the browser console.
+ return false;
+}
+
+window.addEventListener('error', evt => handleError(evt, evt.error));
+window.addEventListener('unhandledrejection', evt => handleError(evt.reason, evt.reason));
diff --git a/vnc.html b/vnc.html
index 8d4b497..d8c0b7e 100644
--- a/vnc.html
+++ b/vnc.html
@@ -55,7 +55,7 @@
<link rel="preload" as="image" href="app/images/error.svg">
<link rel="preload" as="image" href="app/images/warning.svg">
- <script src="app/error-handler.js"></script>
+ <script type="module" crossorigin="anonymous" src="app/error-handler.js"></script>
<script type="module" crossorigin="anonymous" src="app/ui.js"></script>
</head>