don't allow listeners in /slide/

pull/1/head
ansuz 8 years ago
parent ebff304602
commit b79618c94a

@ -45,7 +45,7 @@ define([
var unsafeTag = function (info) { var unsafeTag = function (info) {
if (['addAttribute', 'modifyAttribute'].indexOf(info.diff.action) !== -1) { if (['addAttribute', 'modifyAttribute'].indexOf(info.diff.action) !== -1) {
if (/^on/.test(info.diff.name)) { if (/^on/.test(info.diff.name)) {
console.log("Rejecting forbidden element attribute with name", info.diff.element.nodeName); console.log("Rejecting forbidden element attribute with name", info.diff.name);
return true; return true;
} }
} }
@ -91,12 +91,28 @@ define([
return patch; return patch;
}; };
var slice = function (coll) {
return Array.prototype.slice.call(coll);
};
/* remove listeners from the DOM */
var removeListeners = function (root) {
slice(root.attributes).map(function (attr) {
if (/^on/.test(attr.name)) {
root.attributes.removeNamedItem(attr.name);
}
});
// all the way down
slice(root.children).forEach(removeListeners);
};
var draw = Slide.draw = function (i) { var draw = Slide.draw = function (i) {
console.log("Trying to draw slide #%s", i); console.log("Trying to draw slide #%s", i);
if (typeof(Slide.content[i]) !== 'string') { return; } if (typeof(Slide.content[i]) !== 'string') { return; }
var c = Slide.content[i]; var c = Slide.content[i];
var Dom = domFromHTML('<div id="content">' + Marked(c) + '</div>'); var Dom = domFromHTML('<div id="content">' + Marked(c) + '</div>');
removeListeners(Dom.body);
var patch = makeDiff(domFromHTML($content[0].outerHTML), Dom); var patch = makeDiff(domFromHTML($content[0].outerHTML), Dom);
if (typeof(patch) === 'string') { if (typeof(patch) === 'string') {

Loading…
Cancel
Save