DOM 要素をラップするXrayWrapper
ために Greasemonkey によって使用されるは、 getter/setterを実際にサポートしていないため、完全なラッパーではないようです。innerHTML
私は単純化した再帰的なinnerHTML
実装を書きました。次のように呼び出しますhtml(element)
。要素、属性、およびテキスト ノード以外はすべて無視されますが、関数で使用する他のDOM 属性XrayWrapper
が でサポートされている限り、その目的を果たすはずです。
var html = (function() {
var ELEMENT = this.Node?Node.ELEMENT_NODE:1,
TEXT = this.Node?Node.TEXT_NODE: 3;
return function html(el, outer) {
var i = 0, j = el.childNodes, k = outer?"<" + (m = el.nodeName.toLowerCase()) + attr(el) + ">":"",
l = j.length, m, n;
while(i !== l) switch((n = j[i++]).nodeType) {
case ELEMENT: k += html(n, true); break;
case TEXT: k += n.nodeValue;
} return k + (outer?"</" + m + ">":"");
}; function attr(el) {
var i = 0, j = el.attributes, k = new Array(l = j.length), l, m;
while(i !== l) k[i] = (m = j[i++].nodeName) + "=\"" + el.getAttribute(m) + "\"";
return (l?" ":"") + k.join(" ");
}
})();