فهرست منبع

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) {