diff --git a/airframe-rx-html/.js/src/main/scala/wvlet/airframe/rx/html/DOMRenderer.scala b/airframe-rx-html/.js/src/main/scala/wvlet/airframe/rx/html/DOMRenderer.scala index 4b4015c5f..b26574c65 100644 --- a/airframe-rx-html/.js/src/main/scala/wvlet/airframe/rx/html/DOMRenderer.scala +++ b/airframe-rx-html/.js/src/main/scala/wvlet/airframe/rx/html/DOMRenderer.scala @@ -215,6 +215,14 @@ object DOMRenderer extends LogSupport { val textNode = newTextNode(s) node.mountHere(textNode, anchor) Cancelable.empty + case r: RawHtml => + val domNode = dom.document.createElement("span") + domNode.innerHTML = r.html + // Extract the inner node + domNode.childNodes.headOption.foreach { n => + node.mountHere(n, anchor) + } + Cancelable.empty case EntityRef(entityName) => // Wrap entity ref with a span tag. // This is a workaround if the text is inserted in the middle of text element. diff --git a/airframe-rx-html/.js/src/test/scala/wvlet/airframe/http/rx/html/HtmlRenderingTest.scala b/airframe-rx-html/.js/src/test/scala/wvlet/airframe/http/rx/html/HtmlRenderingTest.scala index 4f28a1260..cfade17b7 100644 --- a/airframe-rx-html/.js/src/test/scala/wvlet/airframe/http/rx/html/HtmlRenderingTest.scala +++ b/airframe-rx-html/.js/src/test/scala/wvlet/airframe/http/rx/html/HtmlRenderingTest.scala @@ -131,4 +131,9 @@ class HtmlRenderingTest extends AirSpec { val d = div("1.23", EntityRef("amp"), "0.5") render(d).contains("&") shouldBe true } + + test("raw html") { + val d = div(RawHtml("hello")) + render(d) shouldBe "