JSON parsing of data-mkws-config attribute now protected by try/catch
authorMike Taylor <mike@indexdata.com>
Mon, 31 Mar 2014 15:35:41 +0000 (16:35 +0100)
committerMike Taylor <mike@indexdata.com>
Mon, 31 Mar 2014 15:35:41 +0000 (16:35 +0100)
block, complains loudly on failure.

src/mkws-widgets.js

index c2795db..c3a309d 100644 (file)
@@ -27,10 +27,15 @@ function widget($, team, type, node) {
        if (a.name === 'data-mkws-config') {
            // Treat as a JSON fragment configuring just this widget
            log(node + ": parsing config fragment '" + a.value + "'");
-           var data = $.parseJSON(a.value);
-           for (var key in data) {
-               log(node + ": adding config element " + key + "='" + data[key] + "'");
-               that.config[key] = data[key];
+           var data;
+           try {
+               data = $.parseJSON(a.value);
+               for (var key in data) {
+                   log(node + ": adding config element " + key + "='" + data[key] + "'");
+                   that.config[key] = data[key];
+               }
+           } catch (err) {
+               alert("Can't parse " + node + " data-mkws-config as JSON: " + a.value);
            }
        } else if (a.name.match (/^data-mkws-/)) {
            var name = a.name.replace(/^data-mkws-/, '')