innerText
&textContent
は両方とも2016年の時点で標準化されていNode
ます。すべてのオブジェクト(純粋なテキストノードを含む)にはtextContent
がありHTMLElement
ますが、を持つのはオブジェクトだけですinnerText
。
一方でtextContent
、ほとんどのブラウザで動作、それはIE8以前では動作しません。IE8でのみ機能するように、このポリフィルを使用します。このポリフィルはIE7以前では機能しません。
if (Object.defineProperty
&& Object.getOwnPropertyDescriptor
&& Object.getOwnPropertyDescriptor(Element.prototype, "textContent")
&& !Object.getOwnPropertyDescriptor(Element.prototype, "textContent").get) {
(function() {
var innerText = Object.getOwnPropertyDescriptor(Element.prototype, "innerText");
Object.defineProperty(Element.prototype, "textContent",
{
get: function() {
return innerText.get.call(this);
},
set: function(s) {
return innerText.set.call(this, s);
}
}
);
})();
}
このObject.defineProperty
メソッドはIE9以降で使用できますが、IEオブジェクトでのみ使用できます。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent