Skip to content

Commit fb33d97

Browse files
committed
Fix rendering issue with HtmlElement
1 parent f841689 commit fb33d97

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

src/Elements/HtmlElement.svelte

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
<script>
22
import { onMount } from 'svelte';
3-
export let content;
4-
export const id = '_' + Math.random().toString(36).substr(2, 9);
3+
export let payload;
54
6-
const setInnerHTML = function(elm, html) {
7-
elm.innerHTML = html;
5+
const executeJS = function() {
6+
document.body.querySelectorAll('.html-code').forEach(element => {
7+
element.classList.remove('html-code');
88
9-
Array.from(elm.querySelectorAll('script')).forEach(oldScript => {
10-
const newScript = document.createElement('script');
9+
Array.from(element.querySelectorAll('script')).forEach(oldScript => {
10+
const newScript = document.createElement('script');
1111
12-
Array.from(oldScript.attributes)
13-
.forEach( attr => newScript.setAttribute(attr.name, attr.value) );
14-
newScript.appendChild(document.createTextNode(oldScript.innerHTML));
15-
oldScript.parentNode.replaceChild(newScript, oldScript);
16-
});
12+
Array.from(oldScript.attributes)
13+
.forEach( attr => newScript.setAttribute(attr.name, attr.value) );
14+
newScript.appendChild(document.createTextNode(oldScript.innerHTML));
15+
oldScript.parentNode.replaceChild(newScript, oldScript);
16+
});
17+
})
1718
}
1819
1920
onMount(() => {
20-
setInnerHTML(document.getElementById(id), content)
21+
executeJS();
2122
});
2223
</script>
2324

24-
<div id={id}></div>
25+
<div class="html-code">
26+
{@html payload.content}
27+
</div>

src/Message.svelte

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@
2626

2727
<div class="content">
2828
{#each message['payloads'] as payload}
29+
2930
<div class="element">
3031
{#if payload['type'] === 'code'}
3132
<CodeElement content={payload['content']} />
3233
{:else if payload['type'] === 'html'}
33-
<HtmlElement content={payload['content']} />
34+
<HtmlElement payload={payload} />
3435
{:else if payload['type'] === 'table'}
3536
<TableElement content={payload['content']} />
3637
{:else if payload['type'] === 'pause'}

0 commit comments

Comments
 (0)