From 00cca2a247e80fbd433a3e9c4510d86757a30730 Mon Sep 17 00:00:00 2001 From: Michael Aufreiter Date: Mon, 17 Nov 2025 15:49:53 +0100 Subject: [PATCH 1/2] Add repro for #492. --- repros/492.html | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 repros/492.html diff --git a/repros/492.html b/repros/492.html new file mode 100644 index 0000000..aa98a61 --- /dev/null +++ b/repros/492.html @@ -0,0 +1,37 @@ + + + + + + + + + + + +
+ Select text and press CMD+B to format it. Console is expected to log + 'inputType: formatBold' +
+
Some text.
+ + From 90dd3a7cd8f10ba43a2a45a2838457d8de7cc485 Mon Sep 17 00:00:00 2001 From: Michael Aufreiter Date: Mon, 17 Nov 2025 15:59:46 +0100 Subject: [PATCH 2/2] Add repros. --- repros/493.html | 38 ++++++++++++++++++++++++++++++ repros/494.html | 38 ++++++++++++++++++++++++++++++ repros/495.html | 42 +++++++++++++++++++++++++++++++++ repros/496.html | 44 +++++++++++++++++++++++++++++++++++ repros/497.html | 40 +++++++++++++++++++++++++++++++ repros/498.html | 58 +++++++++++++++++++++++++++++++++++++++++++++ repros/499.html | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ repros/500.html | 46 ++++++++++++++++++++++++++++++++++++ repros/501.html | 50 +++++++++++++++++++++++++++++++++++++++ repros/502.html | 50 +++++++++++++++++++++++++++++++++++++++ repros/504.html | 39 +++++++++++++++++++++++++++++++ 11 files changed, 507 insertions(+) create mode 100644 repros/493.html create mode 100644 repros/494.html create mode 100644 repros/495.html create mode 100644 repros/496.html create mode 100644 repros/497.html create mode 100644 repros/498.html create mode 100644 repros/499.html create mode 100644 repros/500.html create mode 100644 repros/501.html create mode 100644 repros/502.html create mode 100644 repros/504.html diff --git a/repros/493.html b/repros/493.html new file mode 100644 index 0000000..bd5cc5a --- /dev/null +++ b/repros/493.html @@ -0,0 +1,38 @@ + + + + + + + + + + + +
+ Select all text via CTRL+A (or triple click). Now type a character or press backspace.


+ Expected: event.getTargetRanges()[0].startContainer should be equal to window.getSelection().anchorNode
+ Actual (in Firefox): window.getSelection().anchorNode is the div, while event.getTargetRanges()[0].startContainer is the text node.

+
+
Hello world
+ + diff --git a/repros/494.html b/repros/494.html new file mode 100644 index 0000000..31ab894 --- /dev/null +++ b/repros/494.html @@ -0,0 +1,38 @@ + + + + + + + + + + + +
+ Select the wrongly spelled "wrld" and replace it using the native spell + checker of browsers.
+ Expects inputType: 'insertReplacementText' (not fired on Safari Desktop) +
+
Hello wrld.
+ + diff --git a/repros/495.html b/repros/495.html new file mode 100644 index 0000000..73d1c6e --- /dev/null +++ b/repros/495.html @@ -0,0 +1,42 @@ + + + + + + + + + + + +
+ On Android press and hold the backspace key.

+ Expected: Switches to 'deleteWordBackward' after around 20 characters.
+ Actual: Deletes whole words, but still triggers 'deleteContentBackward'

+
+ +
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse justo odio, posuere ac sem ac, tempus sagittis diam. Maecenas maximus ornare turpis, sit amet sodales orci rutrum sed. Duis quis lacinia tellus, at suscipit felis. Vivamus sodales pretium enim, non tristique enim auctor ac. Aliquam ac dolor aliquet, dignissim justo quis, volutpat mi. Integer a varius eros. Vestibulum eget ipsum erat. Nunc pulvinar magna risus, quis tempus sapien rhoncus nec. Aenean finibus consequat ante vitae tempus. Quisque bibendum tellus arcu, a faucibus turpis eleifend quis. Donec dictum ipsum consectetur mi ultricies tincidunt. Proin mollis lacinia nisl a pharetra. Proin auctor id eros eget dapibus. Mauris auctor dui quis mauris tristique feugiat. Mauris posuere aliquam blandit. Aliquam nec rhoncus ligula. Donec in urna fermentum, efficitur mauris nec, tempus lectus. Quisque venenatis feugiat ante eu aliquam.
+ +
+ + diff --git a/repros/496.html b/repros/496.html new file mode 100644 index 0000000..4d45ab0 --- /dev/null +++ b/repros/496.html @@ -0,0 +1,44 @@ + + + + + + + + + +
+ When you open this in Safari on the Desktop (I used 26.1), and start a + composition in the empty contenteditable field.

+ E.g. use the dead key ^ and then press + a).

+ Notice how the original editable-field div gets destroyed (the blue dashed + border disappears).

+ Now, comment out the position: relative rule, and try again. Now it works + as expected. Placing a position: relative rule changes the behavior of + contenteditable. 😱😱😱

+ In Chrome/Firefox, this problem does not occur.

+
+
+
+

+
+
+ + diff --git a/repros/497.html b/repros/497.html new file mode 100644 index 0000000..54fa2c9 --- /dev/null +++ b/repros/497.html @@ -0,0 +1,40 @@ + + + + + + + + + +
+ When you open this in Safari on the Desktop (I used 26.1), and start a + composition inside the empty `` field.

+ E.g. use the dead key ^ and then press + a).

+ Notice how the original editable-field `
` gets destroyed (the blue dashed + border disappears).

+ Now change the `
` to a `
` and try again. Now it works. + as expected. + + In Chrome/Firefox, this problem does not occur.

+
+
+ + diff --git a/repros/498.html b/repros/498.html new file mode 100644 index 0000000..dc2638e --- /dev/null +++ b/repros/498.html @@ -0,0 +1,58 @@ + + + + + + + + + + + +
+ When you select one of these placeholders:

+ Safari & Firefox render the cursor after the placeholder (desired)
+ Chrome renders the cursor before the placeholder

+
+
+

+

+
+
+ However, ultimately, editor developer will search for a solution,
+ where placeholders "just work" in all situations. E.g. for elements with centered text.
+ This currently only works when the <br/> element is removed as soon as a field is focused.
+ See also: https://github.com/michael/web-editing/issues/5

+ + When the br is removed, Safari/Chrome render this correctly,
+ but in Firefox the cursor is always rendered at the very beginning, ignoring the centering.

+
+
+
+
+
+ + diff --git a/repros/499.html b/repros/499.html new file mode 100644 index 0000000..10dae3d --- /dev/null +++ b/repros/499.html @@ -0,0 +1,62 @@ + + + + + + + + + + + +
+ Try navigating between the two placeholders with the cursor keys in Safari

+ IN Destkop Safari: Caret disappears because of the conditional show/hide of the br.

+
+
+

+

+
+ + diff --git a/repros/500.html b/repros/500.html new file mode 100644 index 0000000..0254e8b --- /dev/null +++ b/repros/500.html @@ -0,0 +1,46 @@ + + + + + + + + + + + +
+ By adding a placeholder, one can make an empty element selectable and + addressable.
+ NOTE: This is an alternative to adding a <br> element to make a + field addressable.

+ In Chrome and Safari, you can select each empty field using the up/down + arrow keys.
+ However, in Firefox, some fields are missed. +
+
+

+

+

+

+
+ + diff --git a/repros/501.html b/repros/501.html new file mode 100644 index 0000000..df12e50 --- /dev/null +++ b/repros/501.html @@ -0,0 +1,50 @@ + + + + + + + + + + + +
+ CONTEXT: By adding a placeholder, one can make an empty element selectable + and addressable.
+ NOTE: This is an alternative to adding a <br> element to make a + field addressable.

+ In Firefox, however, the cursor is aligned at the left edge of the field, + even though the text is centered. In Chrome/Safari this works as expected. +
+
+

+
+ + diff --git a/repros/502.html b/repros/502.html new file mode 100644 index 0000000..63d9020 --- /dev/null +++ b/repros/502.html @@ -0,0 +1,50 @@ + + + + + + + + + + + +
+ CONTEXT: By adding a placeholder, one can make an empty element selectable + and addressable.
+ NOTE: This is an alternative to adding a <br> element to make a + field addressable.

+ Clicking the placeholder "Heading 3" does not focus the element in + Firefox. However, in Chrome/Safari it does. +
+
+

+
+ + diff --git a/repros/504.html b/repros/504.html new file mode 100644 index 0000000..796d894 --- /dev/null +++ b/repros/504.html @@ -0,0 +1,39 @@ + + + + + + + + + + + +
+ Type something, then click the undo button (which runs document.execCommand('undo'))

+ Expected: inputType: historyUndo
+ Actual (in Chrome Desktop + Android): not fired
+
+ +

+ + +