ホームページ  >  記事  >  ウェブフロントエンド  >  Mozilla ブラウザが innerText_javascript スキルをサポートしていない問題の解決策

Mozilla ブラウザが innerText_javascript スキルをサポートしていない問題の解決策

WBOY
WBOYオリジナル
2016-05-16 18:12:29857ブラウズ

例:

こんにちは

> 次のコードを使用します:alert((document.getElementById("test")).innerText)

IE と Chrome では「Hello, world!」を取得できますが、Firefox では「未定義」を取得します」。本来の理由は、Firefox が要素の innerText 属性をサポートしていないためです。もちろん、インターネット上には、HTMLElement プロトタイプにプロパティ (リーダー) を追加するなど、この問題を解決するための優れた方法がすでにたくさんあります。

ただし、すべてのテキスト ノードには nodeValue 属性があり、すべてのブラウザがそれをサポートしています。このメソッドを使用して、HTML 要素内のテキストを読み取ることができます。
次の元のコードは、この問題を解決するだけです:

コードをコピーします コードは次のとおりです:
function getText(e) {
//ブラウザが要素の innerText 属性をサポートしている場合、この属性を直接返します
if(e.innerText) { return e.innerText } //innerText 属性はサポートされていません。
var t = "" を処理するには次のメソッドを使用します。

//要素オブジェクトが渡された場合は、その子要素へのアクセスを続行します。
e = e.childNodes || e;

//サブ要素
for(var i=0; i//Ifこれはテキスト要素であり、文字列 t に蓄積されます。
if(e[i].nodeType == 3) { t = e[i].nodeValue; }

//それ以外の場合は、要素のすべての子ノードを再帰的に走査します
else { t = getText (e[i].childNodes); }
}

return t;
}


この関数を使用して、次の DOM を見てみましょう。構造:

こんにちは
次に、
alert(getText(document.getElementById("test"));
IE、Chrome、Firefox で「Hello, world!」を取得できます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。