javascript - AngularJS $http HTML 解析器

标签 javascript angularjs

总而言之,我们正在使用 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/

相关文章:

javascript - 如何使用 .filter 比较数组中存在的每个值

ruby-on-rails - angularjs:使用 Ruby On Rails 的 ajax 网站无法抓取

javascript - 在 Karma 单元测试中使用 ui-router 和指令时出现意外 GET

javascript - 从数组中删除项目的最有效方法?

javascript - 如何通过在javascript中检查cookie来从bootstrap显示模式

javascript - 在 Flux 架构中,你如何管理 Store 生命周期?

javascript - 有没有办法在原型(prototype)中使用函数参数作为 getter ?

javascript - 如何增加material-ui图标?

javascript - 与数据库连接和输入处理有关的 ionic 问题

javascript - 在 AngularJS Controller 和指令中使用 "this"而不是 "scope"