troubles trying to parse an html string with DOMParser
摘要如下:
1 2 3 4 5 6 7 8 9 | html ="<!doctype html>"; html +="<html>"; html +="<head>test</head>"; html +="<body><p>test</p></body>"; html +="</html>"; parser = new DOMParser(); dom = parser.parseFromString (html,"text/html"); |
尝试执行这些行时出现错误:
错误:组件返回了失败代码:0x80004001(NS_ERROR_NOT_IMPLEMENTED)[nsIDOMParser.parseFromString]
我试图弄清楚发生了什么,但是代码似乎是正确的,并且我在网上搜索了,我没有任何线索来到这里。
您之前遇到过这种故障吗?如果是,该错误隐藏在哪里?
您应该使用JavaScript DOMParser中描述的DomParser函数访问innerHTML和其他属性
我为您创建了小提琴http://jsfiddle.net/CSAnZ/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | /* * DOMParser HTML extension * 2012-02-02 * * By Eli Grey, http://eligrey.com * Public domain. * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. */ /*! @source https://gist.github.com/1129031 */ /*global document, DOMParser*/ (function(DOMParser) { "use strict"; var DOMParser_proto = DOMParser.prototype , real_parseFromString = DOMParser_proto.parseFromString; // Firefox/Opera/IE throw errors on unsupported types try { // WebKit returns null on unsupported types if ((new DOMParser).parseFromString("","text/html")) { // text/html parsing is natively supported return; } } catch (ex) {} DOMParser_proto.parseFromString = function(markup, type) { if (/^\\s*text\\/html\\s*(?:;|$)/i.test(type)) { var doc = document.implementation.createHTMLDocument("") , doc_elt = doc.documentElement , first_elt; doc_elt.innerHTML = markup; first_elt = doc_elt.firstElementChild; if (doc_elt.childElementCount === 1 && first_elt.localName.toLowerCase() ==="html") { doc.replaceChild(first_elt, doc_elt); } return doc; } else { return real_parseFromString.apply(this, arguments); } }; }(DOMParser)); |