2013-03-07 61 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