如何使用jsdom从节点REPL解析DOM
how to parse a DOM with jsdom from a node REPL
我正在尝试编写一些DOM解析代码,以便在节点REPL环境中运行。以下是SSCCE:
"use strict";
var jsdom = require("jsdom");
var html="<a></a>";
function parse(html, x) {
jsdom.env(html, function(errors, window) {
x.window = window;
});
}
var x = {};
parse(html, x);
console.log(x.window);
其想法是,在调用parse
函数后,我将在x
对象中获得解析后的DOM。
当我把上面的代码放在文件j.js
中并从REPL加载时,我得到:
> .load j.js
> "use strict";
'use strict'
> var jsdom = require("jsdom");
undefined
> var html="<a></a>";
undefined
> function parse(html, x) {
... jsdom.env(html, function(errors, window) {
..... x.window = window;
..... });
... }
undefined
> var x = {};
undefined
> parse(html, x);
undefined
> console.log(x.window);
undefined
undefined
>
为什么代码未能分配x.window
属性?
jsdom.env
回调将异步求值。这意味着在大多数情况下(可能总是)console.log(x.window)
在x.window = window;
分配之前执行。
最简单的修复方法是传递一个回调函数,该函数在分配后执行:
...
function parse(html, x, done) {
jsdom.env(html, function(errors, window) {
x.window = window;
done();
});
}
var x = {};
parse(html, x, function() {
console.log(x);
});
相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 使用JQuery解析JSON嵌套数组
- 可以简化嵌套的延迟Q Promises解析吗
- 我的模板未被解析
- 如何在Javascript中解析AJAX数组的特定部分
- 主干集合重置和解析
- 解析javascript表单验证器
- 可以't使用Angular解析/检索JSON
- 如何使用Node.js最有效地解析网页
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- 可以't使用Appcelerator将JSON文件解析为JavaScript中的TableView
- 解析JSON并从中删除对象会出错
- jquery创建的数据-*有时无法解析
- 延期承诺值未更新/解析/延期
- [Vue warn]:未能解析组件
- 在解析对象.save()中;没有返回任何原因
- 测试角度解析方法
- 对象未在Javascript中进行字符串化和解析
- AngularJS加载JSON数据,然后从中解析/加载HTML
- 如何使用jsdom从节点REPL解析DOM