在 Rails 中去除内联 CSS 和 JavaScript

Posted

技术标签:

【中文标题】在 Rails 中去除内联 CSS 和 JavaScript【英文标题】:Strip Inline CSS and JavaScript in Rails 【发布时间】:2010-11-12 20:54:50 【问题描述】:

我正在开发一个 Rails 应用程序,我想知道剥离 CSS 或 javascript 块的最佳方法是什么。

<style>
...
</style>
  -or-
<script>
...
</script>

我使用 strip_tags 帮助器来处理大部分 html,但是当内容包含内联 CSS 时,它会留下一堆 CSS。谢谢

【问题讨论】:

【参考方案1】:

推荐的方法是使用sanitize 方法。 strip_tags 方法有些受限且不太安全:

[strip_tags] 从 html 中剥离所有 HTML 标签, 包括cmets。这使用 html-scanner 标记器和它的 HTML 解析能力受限于 html-扫描仪。

如果您使用 sanitize,您会更加安全,只需首先列出您打算允许的标签白名单。

【讨论】:

谢谢,但这不能解决我的问题。我想摆脱打开和关闭样式标签,以及这些标签之间的所有内联 CSS。这样我就只剩下纯文本了。【参考方案2】:

如果您的应用程序需要用户提供的 CSS,您也可以尝试使用 http://github.com/courtenay/css_file_sanitize/tree/master。

【讨论】:

谢谢,这肯定会有用,但它不能回答我的问题(见上面的评论)。谢谢【参考方案3】:

尝试使用 Nokogiri 库:

require 'nokogiri'

str = " ... " # some html from user
doc = Nokogiri::HTML(str)
doc.css("style,script").remove # remove all tags with content
new_string = doc.to_s

Nokogiri 可以做得更多,但这是你在问题中所要求的 :-)

【讨论】:

以上是关于在 Rails 中去除内联 CSS 和 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

将外部 CSS 转换为内联 CSS 用于 Rails 中的邮件

Rails:内联 CSS 从数据库条目中检索样式

Rails 4:使用内置 HTML 清理时禁用自动 CSS 清理

Webpack 从我的样式表中的内联 SVG 中去除标签,我不知道为啥

如何在 Rails 中为 Prawnto 生成的 PDF 进行内联格式(粗体和下划线)?

Rails 去除除数字逗号和小数点以外的所有内容