如何在Firefox中解析JavaScript中的HTML?

hmp*_*hmp 13 javascript ajax firefox dom

在Firefox中解析(获取DOM树)XmlHttpRequest的HTML结果的最佳方法是什么?

编辑:

没有 DOM树,我想获得它.

XmlHttpRequest的"responseXML"仅在结果是实际XML时起作用,所以我只有responseText才能使用.

innerHTML hack似乎不适用于完整的HTML文档(在<html> </ html>中). - 事实证明它工作正常.

Jam*_*mes 21

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.
Run Code Online (Sandbox Code Playgroud)

  • 根据这个页面:http://bytes.com/topic/javascript/answers/513633-innerhtml-script-tag - 你不需要担心通过innerHTML添加时执行的脚本块:"通过innerHTML插入的脚本块不要在NS6以外的任何浏览器中执行" - 尽管那是在2006年写的. (2认同)
  • 如果要解析的文档myHTML是一个完整的HTML文档,以<!DOCTYPE html> <html> ...开头怎么办?将它作为div的innerHTML没有多大意义,是吗?即使当前的浏览器能够忽略某些标记以获得div的innerHTML的合适替代,但它对我来说听起来并不是一个干净的解决方案. (2认同)