Skip to content

Links within template Elements cause wrong HTML parsing/output #971

@diesieben07

Description

@diesieben07

Astro Info

Astro                    v4.4.1
Node                     v20.11.1
System                   Linux (x64)
Package Manager          npm
Output                   static
Adapter                  none
Integrations             none

If this issue only occurs in one browser, which browser is a problem?

n/a

Describe the Bug

Astro fails to parse a elements within template elements correctly in certain situations.
If the content of the a element is an expression, Astro emits the a element again after the template element.
The following is not handled correctly:

<template>
    <a href="https://example.com">{text}</a>.
</template>
<p>Some text</p>

The emitted HTML is equivalent to the following:

<template>
    <a href="https://example.com">Text</a>.
</template>
<a href="https://example.com">
<p>Some text</p>
</a>

This problem does not occur if the a Element only contains plain text (i.e. not an expression).

What's the expected result?

Astro should parse/emit a elements within template elements correctly.

Link to Minimal Reproducible Example

https://stackblitz.com/edit/github-5amjgj?file=src%2Fpages%2Findex.astro

Participation

  • I am willing to submit a pull request for this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    - P3: minor bugAn edge case that only affects very specific usage (priority)

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions