summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2017-01-18 15:59:31 +0100
committerPierre Ossman <ossman@cendio.se>2017-01-18 15:59:31 +0100
commit413ea87741309c04ccbd8cdb2dfb4d33a1254737 (patch)
tree6cf20fc3fc7f341d79b290ef95a47c2e948b508e
parent1ec1c512af97204c8c81ba6e741ae6706f30e63d (diff)
downloadnovnc-413ea87741309c04ccbd8cdb2dfb4d33a1254737.tar.gz
Fix global error handler
It stopped working when we switched to textContent as it relies on being able to add new HTML elements. Do things properly by adding new elements via createElement().
-rw-r--r--app/ui.js32
1 files changed, 20 insertions, 12 deletions
diff --git a/app/ui.js b/app/ui.js
index 8056078..40b0c33 100644
--- a/app/ui.js
+++ b/app/ui.js
@@ -28,27 +28,35 @@ var UI;
// Fallback for all uncought errors
window.addEventListener('error', function(event) {
try {
- var msg = "";
+ var msg, div, text;
- msg += "<div>";
- msg += event.message;
- msg += "</div>";
+ msg = document.getElementById('noVNC_fallback_errormsg');
- msg += " <div class=\"noVNC_location\">";
- msg += event.filename;
- msg += ":" + event.lineno + ":" + event.colno;
- msg += "</div>";
+ // Only show the initial error
+ if (msg.hasChildNodes()) {
+ return false;
+ }
+
+ div = document.createElement("div");
+ div.appendChild(document.createTextNode(event.message));
+ msg.appendChild(div);
+
+ div = document.createElement("div");
+ div.className = 'noVNC_location';
+ text = event.filename + ":" + event.lineno + ":" + event.colno;
+ div.appendChild(document.createTextNode(text));
+ msg.appendChild(div);
if ((event.error !== undefined) &&
(event.error.stack !== undefined)) {
- msg += "<div class=\"noVNC_stack\">";
- msg += event.error.stack;
- msg += "</div>";
+ div = document.createElement("div");
+ div.className = 'noVNC_stack';
+ div.appendChild(document.createTextNode(event.error.stack));
+ msg.appendChild(div);
}
document.getElementById('noVNC_fallback_error')
.classList.add("noVNC_open");
- document.getElementById('noVNC_fallback_errormsg').textContent = msg;
} catch (exc) {
document.write("noVNC encountered an error.");
}