总而言之,我们正在使用 AngularJS 开发一个网络应用程序,并且我们有一个用例/需求(根本不会经常发生),我们需要从静态服务器检索完整的 HTML 文档。但是,$http 对象似乎返回原始 HTML 字符串作为其“数据”。我们试图避免使用外部库(例如 jQuery),但我们需要将原始 HTML 字符串解析为可查询的 DOM 对象。我们可以使用 iframe 并完成它,但出于众所周知的原因,我们也试图避免使用 iframe。
所以,问题是:AngularJS 是否有一个 HTML 解析器(就像它对 JSON 一样)?或者,处理这种情况的最优雅方式是什么?
P.S.:我们尝试过筛选 Angular 的 API 文档,但老实说,它们是碰碰运气的,而且导航起来不直观。
最佳答案
如果您需要以编程方式从字符串中获取 DOM 元素,将 html 解析为 DOM 对象非常简单。
基本上您会使用 DOMParser。
var parser = new DOMParser();
var doc = parser.parseFromString('<div>some html</div>', 'text/html');
doc.firstChild; //this is what you're after.
如果您想使用 vanilla JS 查询以从中获取元素(意思是,出于某种原因您不想使用 JQuery),您可以这样做:
//get all anchor tags with class "test" under a div.
var testAnchors = doc.firstChild.querySelectorAll('div a.test');
...但请注意:querySelectorAll
仅在 IE8 及更高版本中受支持。
编辑:其他方法...
“换行”方法:
var div = document.createElement('div');
div.innerHTML = '<div>some html</div>';
var result = div.childNodes;
... 请注意,如果将 SVG 或 MathML 放入此方法,此方法将返回 HTMLUnknownElements。它们“看起来”很正常,但它们不起作用。
关于javascript - AngularJS $http HTML 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13141080/