diff --git a/content/util.js b/content/util.js
index f095a95b..6269a758 100644
--- a/content/util.js
+++ b/content/util.js
@@ -41,40 +41,48 @@ vimperator.util = {
{
var type = typeof(arg);
- if (type == "number")
+ // some objects like window.JSON or getBrowsers()._browsers need the try/catch
+ try
{
- return "" + arg + "";
- }
- else if (type == "string")
- {
- if (process_strings)
- arg = '"' + vimperator.util.escapeHTML(arg.replace(/\n/, "\\n")) + '"';
+ if (type == "number")
+ {
+ return "" + arg + "";
+ }
+ else if (type == "string")
+ {
+ if (process_strings)
+ arg = '"' + vimperator.util.escapeHTML(arg.replace(/\n/, "\\n")) + '"';
- return "" + arg + "";
- }
- else if (type == "boolean")
- {
- return "" + arg + "";
- }
- else if (arg == null || arg == "undefined")
- {
- return "" + arg + "";
- }
- else if (type == "object" || type == "function")
- {
- // for java packages value.toString() would crash so badly
- // that we cannot even try/catch it
- if (/^\[JavaPackage.*\]$/.test(arg))
- return "[JavaPackage]";
+ return "" + arg + "";
+ }
+ else if (type == "boolean")
+ {
+ return "" + arg + "";
+ }
+ else if (arg == null || arg == "undefined")
+ {
+ return "" + arg + "";
+ }
+ else if (type == "object" || type == "function")
+ {
+ // for java packages value.toString() would crash so badly
+ // that we cannot even try/catch it
+ if (/^\[JavaPackage.*\]$/.test(arg))
+ return "[JavaPackage]";
- var str = arg.toString();
- if (typeof str == "string") // can be "undefined"
- return vimperator.util.escapeHTML(str);
- else
- return "undefined";
+ var str = arg.toString();
+ if (typeof str == "string") // can be "undefined"
+ return vimperator.util.escapeHTML(str);
+ else
+ return "undefined";
+ }
+ }
+ catch (e)
+ {
+ return "<unknown>";
}
- return arg;
+ return "<unknown type>";
}
}
diff --git a/content/vimperator.js b/content/vimperator.js
index cb56a4bd..b1c817b4 100644
--- a/content/vimperator.js
+++ b/content/vimperator.js
@@ -360,29 +360,31 @@ const vimperator = (function() //{{{
else
string += obj + "::\n";
- for (var i in object)
+ try // window.content often does not want to be queried with "var i in object"
{
- var value;
- try
+ for (var i in object)
{
- if (i == "JSON") // without this ugly hack, ":echo window" does not work
- value = "[object JSON]";
- else
+ var value;
+ try
+ {
value = object[i];
- }
- catch (e)
- {
- value = "";
- }
+ }
+ catch (e)
+ {
+ value = "<no value>";
+ }
- if (color)
- {
- value = vimperator.util.colorize(value, true);
- string += "" + i + ": " + value + "\n";
+ if (color)
+ {
+ value = vimperator.util.colorize(value, true);
+ string += "" + i + ": " + value + "\n";
+ }
+ else
+ string += i + ": " + value + "\n";
}
- else
- string += i + ": " + value + "\n";
}
+ catch (e) { };
+
return string;
},