禁用iframe上的JavaScript
HTML页面编辑器。编辑器将文件加载到iframe中。从那里,它可以添加,修改或删除页面上具有新属性,样式等的元素。问题在于,JavaScript(和/或其他编程语言)可以在加载时完全修改页面,之后你开始编辑元素。因此,当保存时,它不会保存原始标记,而是保存修改后的页面+您的更改。 所以,需要一些方法来禁用iframe上的JavaScript,或者在JavaScript开始修改页面之前以某种方式删除所有JavaScript。
方法一:
考虑编写一个脚本来遍历所有元素,删除任何标签,onclick,onfocus,onmouseover等等。但是这将是一个非常麻烦的过程。 有没有一种更简单的方法来摆脱在iframe内部运行的JavaScript?这时候可以使用方法二:
方法二:
可以尝试使用CKEditor采用的相同解决方案,可以在此处进行演示。 通过从RTE模式切换到查看源模式,可以输入一些JavaScript并查看结果,该结果是安全编码字符串中JS节点的替代。
首先切换到源码模式,请输入一些JS行:
回到富文本编辑器模式时,将看到它以这种方式呈现:
<!--%3Cscript%20type%3D%22text%2Fjavascript%22%3E%0D%0A%2F%2F%20comment%0D%0Aalert('Ciao')%3B%0D%0A%3C%2Fscript%3E-->
这是最简单有效的方法之一,因为用于解析JS节点的RegExp并不复杂。
一个例子:
var pattern = /<script(s+(w+s*=s*("|').*?3)s*)*s*(/>|>.*?</scripts*>)/;
var match = HTMLString.match(pattern); // array containing the occurrences found