如何从JavaScript在Firefox解析HTML?

什么是解析(得到的DOM树)的XmlHttpRequest在Firefox中的HTML结果的最好方法是什么?

编辑:

没有DOM树,我要得到它。

的XmlHttpRequest的“responseXML的”仅当结果是实际的XML,所以我只有responseText的一起工作。

的innerHTML黑客似乎并没有一个完整的HTML文档的工作(在<HTML> </ HTML>)。 - 原来它工作正常。

--------------解决方案-------------

innerHTML应该工作得很好,如

// This would be after the Ajax request:
var myHTML = XHR.responseText;
var tempDiv = document.createElement('div');
tempDiv.innerHTML = myHTML.replace(/<script(.|\s)*?\/script>/g, '');

// tempDiv now has a DOM structure:
tempDiv.childNodes;
tempDiv.getElementsByTagName('a'); // etc. etc.

至少对于较新版本的Firefox,一个更简单的方法是或者即将问世。

https://developer.mozilla.org/en/HTML_in_XMLHttpRequest指示来自FF11开始,将有可能要求一个DOM直接从XHR通过设置responseType属性"document" 在这一点上,在HTML将被解析和DOM刺入responseXML作为XML文档。

循环了XMLHttpRequest对象的responseXML属性。 此外,如果你使用innerHTML来追加一个HTML格式的响应的responseText,浏览器会分析文本和所有偶数追加到文档流之前,DOM内组装。

如果你的数据是XHTML,所以它是有效的XML,那么的DOMParser(Mozilla的)或loadXML的(IE)可能会有所帮助。 如果没有,我想不出有什么比剥离和,然后将它传递到的innerHTML的更好。

见那根的JavaScript指南(第5版)21.1.3。

科林

您可以使用的DOMParser解析HTML - 即使标记汤:

var parser = new DOMParser()
parser.parseFromString('<!DOCTYPE html><html><head><title>hi</title></head><body><p>hello<b>world</b></p>', 'text/html')

我不知道,如果它处理部分表格标记很好,但它应该产生相同的DOM本身并为几乎任何标记的浏览器。

分类:JavaScript的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.731 (s). 10 q(s)