javascript - 使用 jQuery .html() 时如何阻止 JavaScript 执行

标签 javascript jquery

我需要使用 jquery 的 $.html() 将客户创建的内容从输入文本区域插入到页面上的另一个 div 以实现实时预览功能

但是如果客户在内容中输入 JavaScript,例如:

<script type='text/javascript'>
alert('abc');
</script>

当使用.html()调用时,javascript将被执行,如果我使用.text(),那么内容将不会被视为html .

我该如何解决这个问题?我为它创建了一个jsfiddle:http://jsfiddle.net/larryzhao/VL82f/

更新: 也许我需要说得更清楚,我正在做 Markdown 的预览。因此,用户在文本区域输入 markdown,我将其转换为 html,并将其显示到 div#dest。如果用户输入如上所示的脚本怎么办?有没有办法保留原始类型但不执行它?如果没有,那么我想我会编写一个正则表达式来删除我认为的脚本 block ..

我找到了两个在线markdown工具: http://daringfireball.net/projects/markdown/dingus这个执行它 http://www.ctrlshift.net/project/markdowneditor/而这个只是删除脚本 block

最佳答案

是否有针对 JavaScript 的 HTML 清理程序?如果是这样,这就是这样做的方法。请注意,正确执行此操作非常不容易,因此简单的正则表达式通常是不够的。如果您通过应用程序将其保存在某个位置,则预览功能可以通过发布和取回清理后的版本来利用该清理程序。

关于javascript - 使用 jQuery .html() 时如何阻止 JavaScript 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311542/

相关文章:

javascript - 使用过滤器的 AngularJS 搜索不起作用

javascript - Mootools 验证与 jQuery Slide 的脚本冲突

Jquery:选择中的选择

php - 当前浏览器检测的最佳实践是什么

jquery - 页面滚动时的技能栏动画

javascript - Next.js router.push 对查询参数进行编码

JavaScript Object.create 现有对象的样式

javascript - 使用 THIS 比使用选择器更有效吗?

javascript - 是否可以在 `&lt;textarea&gt;` 中获取鼠标光标下的单词?

javascript - 为多个 Highcharts 创建默认选项