From 4f3cacabfd120d1f3a53c2c2fede979d5d8c0b14 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Mon, 21 Oct 2024 14:55:15 +0200 Subject: [PATCH] fix: add more robust check for `Element` prototype fixes #13691 fixes #13414 fixes #13726 --- .changeset/gorgeous-vans-sparkle.md | 5 +++++ .../svelte/src/internal/client/dom/elements/attributes.js | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .changeset/gorgeous-vans-sparkle.md diff --git a/.changeset/gorgeous-vans-sparkle.md b/.changeset/gorgeous-vans-sparkle.md new file mode 100644 index 0000000000..9df0360fe9 --- /dev/null +++ b/.changeset/gorgeous-vans-sparkle.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: add more robust check for `Element` prototype diff --git a/packages/svelte/src/internal/client/dom/elements/attributes.js b/packages/svelte/src/internal/client/dom/elements/attributes.js index 802d45153d..1ed171998e 100644 --- a/packages/svelte/src/internal/client/dom/elements/attributes.js +++ b/packages/svelte/src/internal/client/dom/elements/attributes.js @@ -320,7 +320,8 @@ function get_setters(element) { var proto = get_prototype_of(element); // Stop at Element, from there on there's only unnecessary setters we're not interested in - while (proto.constructor.name !== 'Element') { + // Do not use contructor.name here as that's unreliable in some browser environments + while (!Element.prototype.isPrototypeOf(proto)) { descriptors = get_descriptors(proto); for (var key in descriptors) {