0

数年前に書かれた、IE でのみ動作するコードがいくつかあります。今すぐブラウザで動作させたいと思います。

そのため、コードは XHR によって XML を受け取り、その内容を読み取ります。そして、要素の「コレクション」があります。FF では型はElementであり、IE ではIXMLDOMElementです。テキスト値の読み取りを統一するには (FF はtextContentプロパティ、IE textを使用します)、次のようなメソッドを追加します。

Element.prototype.getText = function() {
    return this.text || this.textContent;
}

しかし、 Elementの代わりにIXMLDOMElementを使用して IE でこれを実行しようとすると、(IE で) IXMLDOMElement が定義されていないというエラーが発生します。そのタイプの場合、何かを定義できないのはどうしてですか? (IEの開発ツールで確認済み)

誰かにアドバイスをもらえますか、これに対処する方法を教えてください。

4

1 に答える 1

0

Element インターフェイスはバージョン 8 以降の Internet Explorer でサポートされています。残念ながら、インターフェイスはバージョン 8 より前の Internet Explorer ではサポートされていません。

IE では (テキストではなく) innerText プロパティを使用します。これはすべての HTML 要素でサポートされており、FF の textContent プロパティと同じ機能を備えています。JavaScript では、空の文字列を条件として使用すると false と評価されるため、this.text が空で this.textContent がそうでない場合、(this.text || this.textContent) 式は空の文字列ではなく undefined を返します。サポートされています。

Element.prototype.getText = function() { 
    return (this.textContent === undefined ? this.innerText : this.textContent); 
} 

関連リンク: JavaScript のインターフェース
innerText プロパティtextContent プロパティ

于 2010-08-18T13:31:05.557 に答える