honojs / hono

Web framework built on Web Standards
https://hono.dev
MIT License
19.47k stars 551 forks source link

JSX containing <svg> with <title> seems to append page <head> #3179

Closed webdevcody closed 2 months ago

webdevcody commented 2 months ago

What version of Hono are you using?

^4.5.0

What runtime/platform is your app running on?

Bun

What steps can reproduce the bug?

I have a jsx function that returns Discord, and it replaces my page title.

Screenshot 2024-07-23 at 1 17 20 AM Screenshot 2024-07-23 at 1 17 31 AM Screenshot 2024-07-23 at 1 22 53 AM
import { Hono } from "hono";
import { html } from "hono/html";

const app = new Hono();

export function DiscordIcon(props: any) {
  return (
    <svg
      {...props}
      role="img"
      viewBox="0 0 24 24"
      xmlns="http://www.w3.org/2000/svg"
    >
      <title>Discord</title>
      <path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z" />
    </svg>
  );
}

app.get("/", (c) => {
  return c.html(
    <>
      {html`<!DOCTYPE html>`}
      <html>
        <head>
          <meta charset="UTF-8" />
          <title>Testing</title>
        </head>

        <body className="bg-black text-white">
          <DiscordIcon />
        </body>
      </html>
    </>
  );
});

export default app;

What is the expected behavior?

I don't think using a inside an <svg> should be replacing my head title....</p> <h3>What do you see instead?</h3> <p><em>No response</em></p> <h3>Additional information</h3> <p><em>No response</em></p> </div> </div> <div class="comment"> <div class="user"> <a rel="noreferrer nofollow" target="_blank" href="https://github.com/usualoma"><img src="https://avatars.githubusercontent.com/u/30598?v=4" />usualoma</a> commented <strong> 2 months ago</strong> </div> <div class="markdown-body"> <p>Hi @webdevcody Thanks for the report. I will investigate!</p> </div> </div> <div class="page-bar-simple"> </div> <div class="footer"> <ul class="body"> <li>© <script> document.write(new Date().getFullYear()) </script> Githubissues.</li> <li>Githubissues is a development platform for aggregating issues.</li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script> <script src="/githubissues/assets/js.js"></script> <script src="/githubissues/assets/markdown.js"></script> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/highlight.min.js"></script> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.4.0/build/languages/go.min.js"></script> <script> hljs.highlightAll(); </script> </body> </html>