diff --git a/src/runtime/internal/dev.ts b/src/runtime/internal/dev.ts index be81a115147c..e092c27ee26c 100644 --- a/src/runtime/internal/dev.ts +++ b/src/runtime/internal/dev.ts @@ -85,8 +85,13 @@ export function dataset_dev(node: HTMLElement, property: string, value?: any) { export function set_data_dev(text, data) { data = '' + data; - if (text.wholeText === data) return; - + // In particular, when the property is contentEditable, ' 'TEXT_NODE is inserted into the text + if (text.textContent === '' && text.wholeText !== '') { + if (text.wholeText === data) return; + } else { + if (text.textContent === data) return; + } + dispatch_dev('SvelteDOMSetData', { node: text, data }); text.data = data; } diff --git a/src/runtime/internal/dom.ts b/src/runtime/internal/dom.ts index 942e742e349d..d6d0bb933224 100644 --- a/src/runtime/internal/dom.ts +++ b/src/runtime/internal/dom.ts @@ -536,7 +536,13 @@ export function claim_html_tag(nodes, is_svg: boolean) { export function set_data(text, data) { data = '' + data; - if (text.wholeText !== data) text.data = data; + // In particular, when the property is contentEditable, ' 'TEXT_NODE is inserted into the text + if (text.textContent === '' && text.wholeText !== '') { + if (text.wholeText === data) return; + } else { + if (text.textContent === data) return; + } + text.data = data; } export function set_input_value(input, value) { diff --git a/test/runtime/samples/reactive-values-text-node/_config.js b/test/runtime/samples/reactive-values-text-node/_config.js new file mode 100644 index 000000000000..9e0cb2d5d306 --- /dev/null +++ b/test/runtime/samples/reactive-values-text-node/_config.js @@ -0,0 +1,9 @@ +export default { + html:'
same text
', + async test({ assert, component, target }) { + await new Promise(f => setTimeout(f, 10)); + assert.htmlEqual(target.innerHTML, ` +
same text text
+ `); + } +}; diff --git a/test/runtime/samples/reactive-values-text-node/main.svelte b/test/runtime/samples/reactive-values-text-node/main.svelte new file mode 100644 index 000000000000..1ca11d19f443 --- /dev/null +++ b/test/runtime/samples/reactive-values-text-node/main.svelte @@ -0,0 +1,8 @@ + + +
{text} text
\ No newline at end of file