0

我正在使用“html5”node.js 库,基于“jsdom”库(https://github.com/aredridel/html5

我的代码是:

var  HTML5 = require('/usr/lib/node_modules/html5/lib/html5'),
     Script = process.binding('evals').Script,
     util = require('util'),
     fs = require('fs');
var p = new HTML5.Parser();
p.parse_fragment(fs.readFileSync('test.xml'));

现在我有对象p( 尝试 p.tree.body_pointer._childNodes.constructor 看看)。p.tree.body_pointer._childNodesNodeList

我想通过我的方法扩展它以便能够调用p.tree.body_pointer._childNodes.foo().

我试过 NodeList.prototype.foo = function(){ return "OK"} 但我得到NodeList is not defined错误消息。

我猜 NodeList 是在我找不到的东西里面声明的。查看源代码,我在core或下找到了它,dom但我的代码中没有两者。

我也扫描了 HTML5 对象 - 但没有成功。

任何想法?

4

1 回答 1

1

我能想到的三个解决方案:

// either ...
var NodeList = p.tree.body_pointer._childNodes.constructor;
// ...or...
var core = require('html5/node_modules/jsdom/lib/jsdom/level3/core');
var NodeList = core.dom.level3.core.NodeList;
// ...or...
var jsdom = require('html5/node_modules/jsdom');
var NodeList = jsdom.dom.level3.core.NodeList;
// ...and then...
NodeList.prototype.foo = function() { ... };

不过,这三个都不是真的漂亮。

于 2013-03-07T17:38:09.293 回答