From 413ea87741309c04ccbd8cdb2dfb4d33a1254737 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Wed, 18 Jan 2017 15:59:31 +0100 Subject: [PATCH] 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(). --- app/ui.js | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/app/ui.js b/app/ui.js index 8056078b..40b0c337 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 += "
"; - msg += event.message; - msg += "
"; + msg = document.getElementById('noVNC_fallback_errormsg'); - msg += "
"; - msg += event.filename; - msg += ":" + event.lineno + ":" + event.colno; - msg += "
"; + // 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 += "
"; - msg += event.error.stack; - msg += "
"; + 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."); }