From 9d87e59356808a620d5f5db66ab2837580d473de Mon Sep 17 00:00:00 2001 From: KLuka Date: Thu, 14 May 2015 11:12:11 +0200 Subject: [PATCH] User CSS initialization fix (issue #138) * Now we use onload event to disable user CSS accoring to default or user settings. Problem was that we were setting the 'disabled' attribute on unloaded stylesheet. This should work in all moderen browsers. --- shellinabox/vt100.jspp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/shellinabox/vt100.jspp b/shellinabox/vt100.jspp index 0689f9f..dbc70b4 100755 --- a/shellinabox/vt100.jspp +++ b/shellinabox/vt100.jspp @@ -375,7 +375,23 @@ VT100.prototype.initializeUserCSSStyles = function() { style.setAttribute('rel', 'stylesheet'); style.setAttribute('type', 'text/css'); document.getElementsByTagName('head')[0].appendChild(style); - style.disabled = !enabled; + + // If stylesheet needs to be disabled we need to do that from onload + // event, otherwise 'disabled' attribute will be ignored. + if (!enabled) { + if ('onload' in style) { + style.onload = function(style) { + return function () { + style.disabled = true; + } + }(style); + } else { + // If onload event is not supported we will try to do it the old + // way. This also works sometimes, mosty in cases when browser + // already has cached version of stylesheet. + style.disabled = true; + } + } } // Add entry to menu