Closed
Description
Expected Behavior
The parsing error should be caught and handled.
Actual Behavior
html-react-parser
throws an error and JS execution stops.
Steps to Reproduce
Attempt to parse a tag with an invalid style attribute.
The CSS parser should throw an error:
Error: undefined:1:30: property missing ':'
at error (/home/runner/node_modules/inline-style-parser/index.js:103:15)
at declaration (/home/runner/node_modules/inline-style-parser/index.js:208:37)
at declarations (/home/runner/node_modules/inline-style-parser/index.js:239:20)
at module.exports (/home/runner/node_modules/inline-style-parser/index.js:250:10)
at StyleToObject (/home/runner/node_modules/style-to-object/index.js:21:22)
at cssToJs (/home/runner/node_modules/html-react-parser/lib/attributes-to-props.js:83:3)
at attributesToProps (/home/runner/node_modules/html-react-parser/lib/attributes-to-props.js:64:19)
at domToReact (/home/runner/node_modules/html-react-parser/lib/dom-to-react.js:54:15)
at HTMLReactParser (/home/runner/node_modules/html-react-parser/index.js:19:10)
at evalmachine.<anonymous>:6:16
Example HTML string: <p style="font-family: &quot; franklin gothic itc&quot;,helvetica,arial,sans-serif;">test</p>
Reproducible Demo
Repl.it: https://repl.it/repls/WhitesmokeAggravatingScandisk
Metadata
Metadata
Assignees
Projects
Milestone
Relationships
Development
No branches or pull requests
Activity
remarkablemark commentedon Oct 19, 2019
Thanks for opening this issue @linkelvin11
The error you see is expected behavior since this parser does not handle sanitization of invalid HTML or CSS (see FAQ).
Take a look at #124 to see some examples of how to sanitize the markup before parsing.
I also created a Repl.it that fixes your example using sanitize-html.
linkelvin11 commentedon Oct 21, 2019
Ah ok, I had missed that section of the FAQ.
I was able to find a
sanitize-html
config that worked for my use case.Thanks!
shiglet commentedon Mar 4, 2020
Hello @linkelvin11,
Can you share that sanitize-html config ? Does it keep styling when it's valid or ?
Thank you :)
linkelvin11 commentedon Mar 4, 2020
I used the allow all config specified in the sanitize-html docs.
https://www.npmjs.com/package/sanitize-html#what-if-i-want-to-allow-all-tags-or-all-attributes