diff options
-rw-r--r-- | .changeset/purple-jokes-pay.md | 5 | ||||
-rw-r--r-- | packages/astro/e2e/fixtures/view-transitions/src/pages/form-one.astro | 1 | ||||
-rw-r--r-- | packages/astro/src/transitions/router.ts | 3 |
3 files changed, 7 insertions, 2 deletions
diff --git a/.changeset/purple-jokes-pay.md b/.changeset/purple-jokes-pay.md new file mode 100644 index 000000000..ddb641371 --- /dev/null +++ b/.changeset/purple-jokes-pay.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes an issue where a form field named "attributes" shadows the form.attributes property. diff --git a/packages/astro/e2e/fixtures/view-transitions/src/pages/form-one.astro b/packages/astro/e2e/fixtures/view-transitions/src/pages/form-one.astro index ca5e4cb82..21ac979ff 100644 --- a/packages/astro/e2e/fixtures/view-transitions/src/pages/form-one.astro +++ b/packages/astro/e2e/fixtures/view-transitions/src/pages/form-one.astro @@ -12,5 +12,6 @@ export const prerender = false; <input type="hidden" name="name" value="Testing" /> {postShowThrow ? <input type="hidden" name="throw" value="true" /> : ''} <input type="submit" value="Submit" id="submit" /> + <input type="text" name="attributes" /> </form> </Layout> diff --git a/packages/astro/src/transitions/router.ts b/packages/astro/src/transitions/router.ts index 925aab0a6..5dc327cf4 100644 --- a/packages/astro/src/transitions/router.ts +++ b/packages/astro/src/transitions/router.ts @@ -397,8 +397,7 @@ async function transition( // // Note: getNamedItem can return null in real life, even if TypeScript doesn't think so, hence // the ?. - init.body = - form?.attributes.getNamedItem('enctype')?.value === 'application/x-www-form-urlencoded' + init.body = (from !== undefined && Reflect.get(HTMLFormElement.prototype, "attributes", form).getNamedItem('enctype')?.value === 'application/x-www-form-urlencoded') ? new URLSearchParams(preparationEvent.formData as any) : preparationEvent.formData; } |