-
-
Save geoffa/441518 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// While TinyMCE can strip out <script> tags, | |
// it does not remove inline JS event handlers. | |
// | |
// Example: onmouseover, onclick, etc. | |
// | |
// This should be included at the bottom of a page, | |
// contained inside an <iframe> to sandbox user-created | |
// content. The reason it is contained in an <iframe> | |
// is to prevent user-created CSS from affecting | |
// the parent page's overall look and feel. | |
// | |
(function() { | |
var all = document.getElementsByTagName('*'); | |
var i = all.length; | |
while (i--) { | |
// Keeps links from opening within the <iframe> | |
if (all[i].tagName.toLowerCase() === 'a' && all[i].target !== '_blank') { | |
all[i].target = '_top'; | |
} | |
// Remove all inline event handers - HTML5 events too. | |
all[i].removeAttribute('onabort'); | |
all[i].removeAttribute('onafterprint'); | |
all[i].removeAttribute('onbeforeonload'); | |
all[i].removeAttribute('onbeforeprint'); | |
all[i].removeAttribute('onblur'); | |
all[i].removeAttribute('onblur'); | |
all[i].removeAttribute('oncanplay'); | |
all[i].removeAttribute('oncanplaythrough'); | |
all[i].removeAttribute('onchange'); | |
all[i].removeAttribute('onclick'); | |
all[i].removeAttribute('oncontextmenu'); | |
all[i].removeAttribute('ondblclick'); | |
all[i].removeAttribute('ondrag'); | |
all[i].removeAttribute('ondragend'); | |
all[i].removeAttribute('ondragenter'); | |
all[i].removeAttribute('ondragleave'); | |
all[i].removeAttribute('ondragover'); | |
all[i].removeAttribute('ondragstart'); | |
all[i].removeAttribute('ondrop'); | |
all[i].removeAttribute('ondurationchange'); | |
all[i].removeAttribute('onemptied'); | |
all[i].removeAttribute('onended'); | |
all[i].removeAttribute('onerror'); | |
all[i].removeAttribute('onerror'); | |
all[i].removeAttribute('onfocus'); | |
all[i].removeAttribute('onfocus'); | |
all[i].removeAttribute('onformchange'); | |
all[i].removeAttribute('onforminput'); | |
all[i].removeAttribute('onhaschange'); | |
all[i].removeAttribute('oninput'); | |
all[i].removeAttribute('oninvalid'); | |
all[i].removeAttribute('onkeydown'); | |
all[i].removeAttribute('onkeypress'); | |
all[i].removeAttribute('onkeyup'); | |
all[i].removeAttribute('onload'); | |
all[i].removeAttribute('onloadeddata'); | |
all[i].removeAttribute('onloadedmetadata'); | |
all[i].removeAttribute('onloadstart'); | |
all[i].removeAttribute('onmessage'); | |
all[i].removeAttribute('onmousedown'); | |
all[i].removeAttribute('onmousemove'); | |
all[i].removeAttribute('onmouseout'); | |
all[i].removeAttribute('onmouseover'); | |
all[i].removeAttribute('onmouseup'); | |
all[i].removeAttribute('onmousewheel'); | |
all[i].removeAttribute('onoffline'); | |
all[i].removeAttribute('ononline'); | |
all[i].removeAttribute('onpagehide'); | |
all[i].removeAttribute('onpageshow'); | |
all[i].removeAttribute('onpause'); | |
all[i].removeAttribute('onplay'); | |
all[i].removeAttribute('onplaying'); | |
all[i].removeAttribute('onpopstate'); | |
all[i].removeAttribute('onprogress'); | |
all[i].removeAttribute('onratechange'); | |
all[i].removeAttribute('onreadystatechange'); | |
all[i].removeAttribute('onredo'); | |
all[i].removeAttribute('onreset'); | |
all[i].removeAttribute('onresize'); | |
all[i].removeAttribute('onscroll'); | |
all[i].removeAttribute('onseeked'); | |
all[i].removeAttribute('onseeking'); | |
all[i].removeAttribute('onselect'); | |
all[i].removeAttribute('onstalled'); | |
all[i].removeAttribute('onstorage'); | |
all[i].removeAttribute('onsubmit'); | |
all[i].removeAttribute('onsuspend'); | |
all[i].removeAttribute('ontimeupdate'); | |
all[i].removeAttribute('onundo'); | |
all[i].removeAttribute('onunload'); | |
all[i].removeAttribute('onvolumechange'); | |
all[i].removeAttribute('onwaiting'); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment