Преглед изворни кода

Throw error on parser error in `toStanza`

JC Brand пре 6 година
родитељ
комит
1fb5378524
1 измењених фајлова са 9 додато и 1 уклоњено
  1. 9 1
      src/headless/utils/core.js

+ 9 - 1
src/headless/utils/core.js

@@ -33,8 +33,16 @@ u.isTagEqual = function (stanza, name) {
     }
 }
 
+const parser = new DOMParser();
+const parserErrorNS = parser.parseFromString('invalid', 'text/xml')
+                            .getElementsByTagName("parsererror")[0].namespaceURI;
+
 u.toStanza = function (string) {
-    return Strophe.xmlHtmlNode(string).firstElementChild;
+    const node = parser.parseFromString(string, "text/xml");
+    if (node.getElementsByTagNameNS(parserErrorNS, 'parsererror').length) {
+        throw new Error(`Parser Error: ${string}`);
+    }
+    return node.firstElementChild;
 }
 
 u.getLongestSubstring = function (string, candidates) {