2013-03-07 49 views
0
延伸

我使用 “HTML5” 的Node.js库的基础上, “jsdom” 库(https://github.com/aredridel/html5样机的NodeList

我的代码是:

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._childNodesNodeList (尝试使用p.tree.body_pointer._childNodes.constructor来查看)。

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

我试过NodeList.prototype.foo = function(){return“OK”}但我得到NodeList没有定义错误消息。

我猜NodeList是在我找不到的东西里面声明的。查看源代码,我发现它在coredom下,但是两者都不能从我的代码中获得。

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

任何想法?

回答

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() { ... }; 

所有这三种都不是真正的漂亮,虽然。

+0

谢谢! :) – Alexander 2013-03-10 08:16:06