I was creating a testcase for a bug that is present in every browser and I noticed IE still doesn’t support textContent
as of IE8. I don’t like having to make code that supports both innerText
and textContent
so I implemented the standard myself using IE8’s support for ECMAScript 3.1 accessors. The following is all the code that you need to make textContent
work in IE8.
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", { // It won't work if you just drop in innerText.get // and innerText.set or the whole descriptor. get : function() { return innerText.get.call(this) }, set : function(x) { return innerText.set.call(this, x) } } ); })(); |
Save it as textContent.js and then include the following code to use it.
<!--[if gte IE 8]><script type="text/javascript" src="textContent.js"></script><![endif]--> |