Escape latex in staticmath selectable span
diff --git a/src/services/textarea.js b/src/services/textarea.js index eaed10c..8782e26 100644 --- a/src/services/textarea.js +++ b/src/services/textarea.js
@@ -48,7 +48,8 @@ var ctrlr = this, root = ctrlr.root, cursor = ctrlr.cursor, textarea = ctrlr.textarea, textareaSpan = ctrlr.textareaSpan; - this.container.prepend('<span class="mq-selectable">$'+ctrlr.exportLatex()+'$</span>'); + this.container.prepend(jQuery('<span class="mq-selectable">') + .text('$'+ctrlr.exportLatex()+'$')); ctrlr.blurred = true; textarea.bind('cut paste', false) .bind('copy', function() { ctrlr.setTextareaSelection(); })
diff --git a/test/unit/latex.test.js b/test/unit/latex.test.js index 7baa156..e6e4096 100644 --- a/test/unit/latex.test.js +++ b/test/unit/latex.test.js
@@ -329,4 +329,18 @@ testCantParse('langlerfish/ranglerfish (checking for confusion with langle/rangle)', '\\left\\langlerfish 123\\right\\ranglerfish)'); }); + + suite('selectable span', function() { + setup(function() { + MQ.StaticMath($('<span>2<x</span>').appendTo('#mock')[0]); + }); + + function selectableContent() { + return document.querySelector('#mock .mq-selectable').textContent; + } + + test('escapes < in textContent', function () { + assert.equal(selectableContent(), '$2<x$'); + }); + }); });