mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-10 13:38:39 +00:00
Improve examples, add defer, async, and pre- loading KaTeX (#1580)
* Wrap `katex.render` examples with try...catch * Add starter template with defer in README.md * Update documentation to use `defer` and `onload` * Add documentation on async and pre loading KaTeX * Use sha384 for SRI * Revise wording according to comments * Minor changes * Fix article
This commit is contained in:
@@ -3,15 +3,32 @@ id: error
|
||||
title: Handling Errors
|
||||
---
|
||||
If KaTeX encounters an error (invalid or unsupported LaTeX) and `throwOnError`
|
||||
hasn't been set to `false`, then it will throw an exception of type
|
||||
`katex.ParseError`. The message in this error includes some of the LaTeX
|
||||
source code, so needs to be escaped if you want to render it to HTML.
|
||||
hasn't been set to `false`, then `katex.render` and `katex.renderToString`
|
||||
will throw an exception of type `katex.ParseError`.
|
||||
The message in this error includes some of the LaTeX source code,
|
||||
so needs to be escaped if you want to render it to HTML. For example:
|
||||
|
||||
```js
|
||||
try {
|
||||
var html = katex.renderToString(texString);
|
||||
// '<span class="katex">...</span>'
|
||||
} catch (e) {
|
||||
if (e instanceof katex.ParseError) {
|
||||
// KaTeX can't parse the expression
|
||||
html = ("Error in LaTeX '" + texString + "': " + e.message)
|
||||
.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
||||
} else {
|
||||
throw e; // other error
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
In particular, you should convert `&`, `<`, `>` characters to
|
||||
`&`, `<`, `>` (e.g., using `_.escape`)
|
||||
before including either LaTeX source code or exception messages in your
|
||||
HTML/DOM. (Failure to escape in this way makes a `<script>` injection
|
||||
attack possible if your LaTeX source is untrusted.)
|
||||
`&`, `<`, `>` before including either LaTeX source code or
|
||||
exception messages in your HTML/DOM.
|
||||
(This can also be done using `_.escape`.)
|
||||
Failure to escape in this way makes a `<script>` injection attack possible
|
||||
if your LaTeX source is untrusted.
|
||||
|
||||
Alternatively, you can set `throwOnError` to `false` to use built-in behavior
|
||||
of rendering the LaTeX source code with hover text stating the error.
|
||||
|
Reference in New Issue
Block a user