diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js index 63dcc310b6cd7d46d1ee18340f861310604bedf3..973904c28d1d426a4c3a8d701e67ce30ec4a80ff 100644 --- a/src/js/utilsDOM.js +++ b/src/js/utilsDOM.js @@ -363,8 +363,13 @@ App.UI.DOM.generateLinksStrip = function(links) { */ Macro.add("includeDOM", { handler() { - // When given a function that expects a specific context (eg, called like "foo.bar()"), SC will screw it up and - // execute it in a different context. Putting the expanded argument through eval retains the context. - this.output.append(eval(this.args.full)); + // Basically the same as <<set>>, we just use whatever Scripting.evalJavaScript(this.args.full) returns instead + // of discarding it. + try { + this.output.append(Scripting.evalJavaScript(this.args.full)); + } catch (ex) { + return this.error(`bad evaluation: ${typeof ex === 'object' ? `${ex.name}: ${ex.message}` : ex}`, null, + ex.stack); + } } });