');
+ var canvasLhs = jQuery(`
`);
+ canvasLhs.find('#lhs-margin').attr('id', `${this.id}-lhs-margin`);
+ var editorLhs = jQuery(`
`);
+ editorLhs.eq(0).attr('id', `${this.id}-editor-lhs`);
+ editorLhs.find('#text-lhs').attr('id', `${this.id}-lhs`);
+ var canvasMid = jQuery(`
`);
+ canvasMid.find('#mergely-canvas').attr('id', `${this.id}-mergely-canvas`);
+ canvasMid.find('#lhs-rhs-canvas').attr('id', `${this.id}-lhs-${this.id}-rhs-canvas`);
+
+ this.element.append(splash);
+ this.element.append(canvasLhs);
+ this.element.append(editorLhs);
+ this.element.append(canvasMid);
+ var canvasRhs = jQuery(`
`);
+ canvasRhs.find('#rhs-margin').attr('id', `${this.id}-rhs-margin`);
if (this.settings.rhs_margin == 'left') {
- this.element.append(rmargin);
+ this.element.append(canvasRhs);
}
- this.element.append(jQuery('
'));
+ var editorRhs = jQuery(`
`);
+ editorRhs.eq(0).attr('id', `${this.id}-editor-rhs`);
+ editorRhs.find('#text-rhs').attr('id', `${this.id}-rhs`);
+ this.element.append(editorRhs);
if (this.settings.rhs_margin != 'left') {
- this.element.append(rmargin);
+ this.element.append(canvasRhs);
}
if (!this.settings.sidebar) {
this.element.find('.mergely-margin').css({display: 'none'});
diff --git a/tests/mergely.spec.js b/tests/mergely.spec.js
index 2576bbc..cf53865 100644
--- a/tests/mergely.spec.js
+++ b/tests/mergely.spec.js
@@ -524,5 +524,36 @@ describe('mergely', function () {
done();
});
});
+
+ it.only('should not be vulnerable to XSS', function (done) {
+ function initXSS(options) {
+ // $('body').css({'margin': '0px'}).append("
");
+
+ $('body').get(0).innerHTML = "
alert(123)'>
";
+
+ const editor = $('#mergely');
+ editor.mergely(options);
+ return editor;
+ };
+
+ $(document).ready(() => {
+ const editor = initXSS({
+ height: 100,
+ viewport: true,
+ license: 'lgpl-separate-notice',
+ lhs: (setValue) => setValue(macbeth),
+ rhs: (setValue) => setValue(macbeth)
+ });
+ const { mergely } = $('#mergely');
+ // console.log('HERE', $('body').html());
+ // const { mergely } = $('#mergely"');
+ // expect($('#mergely').mergely('_is_change_in_view', 'lhs', {from: 10, to: 20}, {
+ // 'lhs-line-from': 0,
+ // 'lhs-line-to': 25
+ // })).to.be.true;
+ expect($('body').find('#injected')).to.have.length(0);
+ done();
+ });
+ });
});
});