Firefox の innerText 属性を実装する
コードをたくさん書いてまた忘れてしまい、非常にもったいないので、メモを取る習慣をつけることにしました。
知識ポイント:
0. なぜ innerText なのか?セキュリティの問題のため
1. Firefox dom モデルの属性を拡張します
2. currentStyle 属性は、innerText を実装するときに表示メソッドを考慮します。ブロックすると改行が追加されます
4. textContent を使用しないのはなぜですか? textContent は要素の表示モードを考慮しないため、IE と完全な互換性はありません
今日 Firefox でコピーをサポートする JS コードを作成するときに、innerText を使用しました。テストの結果、Firefox は innerHTML をサポートしますが、innerText はサポートしないことが判明したため、オンラインで検索したところ、非常に良いコードを見つけました。また、返信より以下の互換性コードを取得しました。 IE でのエラー プロンプトの元の問題を修正しました。詳しくは以下の記事をご覧ください。
この段落を JS ファイルに追加すると、MOZILLA/FIREFOX で innerText を使用できます
コードをコピー
コード
HTMLElement.prototype.__defineGetter__
(
"innerText",
if(childS[i].nodeType==1)
anyString = childS[i].tagName=="BR" ? 'n' : childS[i].innerText;
else if(childS[i].nodeType==3)
anyString = childS[i] ].nodeValue;
}
return anyString;
}
);
しかし、このコードは次のように HTMLElement が定義されていないことを示します。具体的な解決策。
コードをコピー
コードは次のとおりです:
function isIE(){ / /ie? ie かどうかを判断します。
if (window.navigator.userAgent.indexOf("MSIE")>=1)
return true;
{
var anyString = "";
var childS = this.childNodes;
for(var i=0; i{
if(childS[i].nodeType==1)
anyString = childS[i].tagName=="BR" ? 'n' : childS[i].innerText;
else if(childS[i].nodeType==3)
anyString = childS[ i].nodeValue ;
}
任意の文字列を返します
}