禁用iframe / div中的JavaScript

文章讨论了在HTML页面编辑器中遇到的问题,即JavaScript可能会在编辑iframe内容时修改页面。提出了两种方法来解决此问题:一是手动删除所有事件处理程序,二是利用类似CKEditor的解决方案,通过编码JavaScript节点来防止执行。CKEditor的方法在切换编辑模式时将JS转换为安全的字符串,避免了代码执行。
摘要由CSDN通过智能技术生成

禁用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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值