Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。
IEの独自属性である「innerText」はオブジェクトから「テキストのみ」直接取得する、とても便利なメソッドです。これをMozillaベースのブラウザでも実装できるHackを見つけたので、メモっておきます。
IE以外でinnerTextを使用する [innerText]
Script
HTMLElement.prototype.__defineGetter__
(
"innerText",function()
{
var textRange = this.ownerDocument.createRange();
textRange.selectNodeContents(this);
return textRange.toString();
}
);
選択範囲を作成し、そこからコンテンツを取得して文字列として返しているわけですね。ネタ元はIBM。「__defineGetter__
」はある特定のプロパティの値を取得するメソッドです。
HTMLElement.prototype.innerText = function() {};
上みたく「prototypeで書けたらすっきりするのにな~」と考えたのですが、巧くできませんでした。なんでだろ?
参照
- openWebWare, openWYSIWYG
- IBM, Web アプリケーションを複数のブラウザーに適応させる
- Mozilla Developer Center, Defining Getters and Setters
Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。