Html-react-parser: 如何处理 !important 样式属性?

创建于 2021-02-18  ·  8评论  ·  资料来源: remarkablemark/html-react-parser

我有一个不幸的情况,我有时会从 cms 获取 html 标签,其中包括带有 !important 的内联样式。 我必须解析它们并在 React 应用程序中呈现它们。

我对此无能为力,所有带有 !important 的样式都被 React 剥离。
有什么方法可以使用 html-react-parser 来保留这些样式,以便它们保留在正文中吗?
抱歉,如果这不是问这个问题的正确地方,请随时关闭此问题。

谢谢!

question

所有8条评论

@linkurzweg您可能不需要html-react-parser 。 见小提琴。 如果您使用危险的SetInnerHTML,请注意XSS 漏洞。

@remarkablemark啊,我什至没有想到危险的
就我而言,XSS 没有真正的风险,所以应该没问题。

问题是,我仍然需要通过 html-react-parser 运行所有内容,因为主体可以包含我需要用某些 React 组件替换的元素。 只有当元素具有样式属性时,我才能按原样呈现它。
有什么方法可以在解析时将 domNode 转换回字符串?

非常感谢你!

@linkurzweg您可以在domToReact()传递您的 domNode,它会将其呈现为 React 元素。 请参阅替换示例。

@remarkablemark再次感谢! 我知道这一点,但我不明白这对我的情况有何帮助?
我仍然需要将 domNode 恢复为一个字符串,我可以将其与危险的 SetInnerHTML 一起使用,或者我没有得到什么?

@linkurzweg我不遵循您的用例。 你能提供一个使用CodeSandboxJSFiddleRepl.it 的例子吗?

@remarkablemark在这里查看小提琴: https : //jsfiddle.net/9bezs1rt/
所以,它是这样的:我得到一个包含所有 html 的巨大字符串,需要以某种方式解析(可以包含脚本标签、iframe、社交媒体嵌入等)。 我需要遍历所有的 dom 节点并处理很多不同的情况。

如果 dom 节点附加了一些内联样式,我可以假设我不需要用某些 React 组件替换它,我只想传递它,包括具有 !important 的样式。 不幸的是,那些迷路了。

@linkurzweg感谢您创建小提琴。 所以样式没有正确呈现的原因是因为内联样式不需要!important

删除!important ,我做了红色边框显示。 请参阅更新的小提琴

@remarkablemark当然,傻我! 在 html 字符串中可能有一些其他带有 !important 的样式标签(这一切都非常混乱),它们可能与内联样式发生冲突。 但是我也可以删除 !important 那里的,所以应该没问题。 :D 非常感谢您的帮助!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

shiglet picture shiglet  ·  6评论

kartikag01 picture kartikag01  ·  5评论

alizeaiter picture alizeaiter  ·  3评论

linkelvin11 picture linkelvin11  ·  4评论

mdeljavan picture mdeljavan  ·  4评论