if (this._length) {
return (this._length);
} else {
- var t = this.firstChild,
- s = 0;
- while (t) {
- if (t.length && (t.nodeType === /*Node.TEXT_NODE*/ 3)) {
- s += t.length;
- } else if (t.getNumberOfChars) { //tspan要素などであれば
- s += t.getNumberOfChars();
- }
- t = t.nextSibling;
- }
+ var s = 0,
+ f = function (ts) {
+ while (ts) {
+ if (ts.length && (ts.nodeType === /*Node.TEXT_NODE*/ 3)) {
+ s += ts.length;
+ } else if (ts.getNumberOfChars) { //tspan要素などであれば
+ s += ts.getNumberOfChars();
+ } else if (ts.firstChild && (ts.nodeType === /*Node.ELEMENT_NODE*/ 1)) {
+ f(ts.firstChild); //再帰的に呼び出す
+ }
+ ts = ts.nextSibling;
+ }
+ ts = void 0;
+ };
+ f(this.firstChild);
this._length = s;
- t = void 0;
return s;
}
};
s.appendChild(s.ownerDocument.createTextNode(str));
expect(s.getNumberOfChars()).toEqual(s.firstChild.length);
s.removeChild(s.firstChild);
+ s.appendChild(s.ownerDocument.createElementNS("http://sie.sourceforge.jp", "hoge"))
+ .appendChild(s.ownerDocument.createTextNode(str));
+ expect(s.getNumberOfChars()).toEqual(s.firstChild.firstChild.length);
+ s.removeChild(s.firstChild);
str = "";
}
});