- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果您查看 MDN 中的 DOMParser 示例:
var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
// returns a Document, but not a SVGDocument nor a HTMLDocument
parser = new DOMParser();
doc = parser.parseFromString(stringContainingXMLSource, "image/svg+xml");
// returns a SVGDocument, which also is a Document.
parser = new DOMParser();
doc = parser.parseFromString(stringContainingHTMLSource, "text/html");
// returns a HTMLDocument, which also is a Document.
他们不断创建新的 DOMParser
实例。但为什么?一个解析器实例不够吗?对于进行大量解析的代码,创建新实例是否具有性能优势?
编辑:人们对这个例子很感兴趣。更好地表达我的问题:为什么 DOMParser
不更像 JSON
及其 parse
方法?为什么 parseFromString
不是静态方法?
最佳答案
您发布的示例只是将 3 个不同的示例连接成 1 个,它们都声明了一个新的 DOMParser,因此每个示例都可以独立运行。
Maybe, but generally I see a lot of code around that does (new DOMParser).parseFromString.
如果他们使用 (new DOMParser()).parseFromString
那是因为他们只使用它一次,他们在其他任何地方都不需要它,因此为它创建一个单独的变量是多余的.
这段代码:
var
proto = DOMParser.prototype
, nativeParse = 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) {}
proto.parseFromString = function(markup, type) {
if (/^\s*text\/html\s*(?:;|$)/i.test(type)) {
var
doc = document.implementation.createHTMLDocument("")
;
if (markup.toLowerCase().indexOf('<!doctype') > -1) {
doc.documentElement.innerHTML = markup;
}
else {
doc.body.innerHTML = markup;
}
return doc;
} else {
return nativeParse.apply(this, arguments);
}
};
如果浏览器不支持 DOMParser
对象,这几乎是一种故障保护。
关于javascript - 创建新的 DOMParser 实例有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39977490/
我正在解析一个包含 a b ..... z 我可以通过以下方式获取项目标签 document.getElementsByTag("items"); 但问题是我无
我正在为 Google Chrome 创建一个插件。我尝试解析以下 xml: 9938 Ikoku Meiro no Croisée Cro
我正在尝试获取我使用 DOMParser 解析的元素的样式属性。 2 console.logs 虽然是空的。知道为什么会这样吗? .xl496 { color:#33669
在将 AJAX 加载的 html 内容注入(inject) DOM 之前,我使用 DOMParser 对其进行操作。 caniuse声明当前的支持很好,但不会回溯到 IE 版本 10 之前仅提供部分支
https://developer.mozilla.org/en-US/docs/Web/API/DOMParser#DOMParser_HTML_extension 看起来 DOMParser 使用
我遇到了一个非常不寻常的问题。如果有必要,为了更好地了解整体情况,请参阅我的上一篇文章,Unable to retrieve a sub-NodeList from a NodeList in Jav
在控制台中执行此操作时,为什么会出现解析错误? TR = ' Hello '; parser = new DOMParser() xmlDocument = _parser
我有一些 HTML 字符串。使用 domparser 更新一些值,现在我需要返回带有更新值的 HTML 字符串格式...Bcoz document.write 仅接受字符串。 查看示例补丁, cons
我正在将 html 从 api 转换为 dom 元素,以便我可以解析 xml 内容。内容示例: var html = 'George Romero, the highly influential au
jQuery 从字符串创建 DOM 元素的首选 native 方法之一是使用新的 DOMParser 类。此示例摘自 MDN : var parser = new DOMParser(); var d
我在使用 DomParser 时遇到了一些奇怪的行为。似乎如果第一个元素是 TEMPLATE,它就会被忽略。 查看下面的输出: printTags('', 'text/html'); document
当我使用 document.createElement 创建脚本元素时并将其附加到 document.head , JavaScript 执行成功: var el = document.createE
为什么以下 DOMParser 的使用导致 HTML 与用作输入的 HTML 不同?它删除了 DOCTYPE 和顶级元素之间的空格,删除了文档元素和 head 之间的空格。 , 并在 之前添加换行符
如果您查看 MDN 中的 DOMParser 示例: var parser = new DOMParser(); var doc = parser.parseFromString(stringCont
我在 Ajax 中加载 HTML,用 DOMParser 解析它并把所有 childNodes将文档主体转换为文档片段。 当我将片段添加到当前文档的正文中时,标签未执行。 我四处摸索,发现如果我用新的
我有一个使用 DOMParser 解析 XML 的方法,如下所示: this.parseXmlString = function(xmlDocStr) { var xmlDoc; va
// html data loaded from [http://example.org/some/path] let htmlSource = ` ... ... `; const dom =
我有大量来自 Excel 的 html 剪贴板数据,大约 250MB(虽然它包含很多格式,所以在实际粘贴时,数据要小得多)。 目前我正在使用以下 DOMParser ,这只是一行代码,一切都发生在幕后
我正在使用以下代码将字符串解析为 DOM: var doc = new DOMParser().parseFromString(string, 'text/xml'); 在哪里 string类似于 c
DOMParser 有一个奇怪的行为。当我使用“text/xml”作为参数时,我得到了我的对象,并且每次我使用子节点(如parentNodes)时,子节点本身就是一个DOM对象。但是,当我使用“tex
我是一名优秀的程序员,十分优秀!