From c455de447df2686541c5c26c5d7d6ee52265725a Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Sat, 3 Feb 2024 20:19:40 -0500 Subject: notes/2024: add moment of discovery about inline JavaScript code in HTML Signed-off-by: Xe Iaso --- lume/src/notes/2024/slash-script-in-string.mdx | 52 ++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 lume/src/notes/2024/slash-script-in-string.mdx (limited to 'lume/src/notes/2024/slash-script-in-string.mdx') diff --git a/lume/src/notes/2024/slash-script-in-string.mdx b/lume/src/notes/2024/slash-script-in-string.mdx new file mode 100644 index 0000000..85848b4 --- /dev/null +++ b/lume/src/notes/2024/slash-script-in-string.mdx @@ -0,0 +1,52 @@ +--- +title: "TIL: you need to escape the in a string in an inline script in HTML" +date: 2024-02-03 +type: blog +hero: + ai: "Photo by Xe Iaso, iPhone 13 Pro" + file: winter-drive + prompt: "A color-graded image of a snowy field taken from the side of a moving car." +--- + +When I was implementing [this change](https://github.com/Xe/site/commit/944fbf678403c77e158accd66363accbbe6d6eb4) in my site, I ran into a weird issue where my literal JavaScript text was being inserted into the page as if it was in the literal HTML. This was odd at first, but then I realized what was going on. + +I was converting code that looked like this: + +```html + +
+``` + +Into something like this: + +```html +'); + } + +
+``` + +But then I saw `'); }` at the top of every page. This was odd, but when I figured out what was going on, I felt very dumb. I was writing a string that contained a `` tag, which was causing the browser to think that the script tag was ending early. + +The fix was simple: escape the `` tag in the string. This is done by replacing the `/` with `\/`: + +```html + +
+``` -- cgit v1.2.3