Adam Shaw 6 лет назад
Родитель
Сommit
345ddcc472
1 измененных файлов с 14 добавлено и 2 удалено
  1. 14 2
      packages/core/src/util/dom-manip.ts

+ 14 - 2
packages/core/src/util/dom-manip.ts

@@ -2,9 +2,14 @@
 // Creating
 // ----------------------------------------------------------------------------------------------------------------
 
+const containerTagHash = {
+  '<tr': 'tbody',
+  '<td': 'tr'
+}
+
 export function htmlToElement(html: string): HTMLElement {
   html = html.trim()
-  let container = document.createElement('div')
+  let container = document.createElement(computeContainerTag(html))
   container.innerHTML = html
   return container.firstChild as HTMLElement
 }
@@ -15,11 +20,18 @@ export function htmlToElements(html: string): HTMLElement[] {
 
 function htmlToNodeList(html: string): NodeList {
   html = html.trim()
-  let container = document.createElement('div')
+  let container = document.createElement(computeContainerTag(html))
   container.innerHTML = html
   return container.childNodes
 }
 
+// assumes html already trimmed and tag names are lowercase
+function computeContainerTag(html: string) {
+  return containerTagHash[
+    html.substr(0, 3) // faster than using regex
+  ] || 'div'
+}
+
 
 // Inserting / Removing
 // ----------------------------------------------------------------------------------------------------------------