FireFox で innerText 実装 code_javascript スキルをサポートしましょう

WBOY
リリース: 2016-05-16 18:40:47
オリジナル
1164 人が閲覧しました
Firefox の innerText 属性を実装する
コードをたくさん書いてまた忘れてしまい、非常にもったいないので、メモを取る習慣をつけることにしました。
知識ポイント:
0. なぜ innerText なのか?セキュリティの問題のため
1. Firefox dom モデルの属性を拡張します
2. currentStyle 属性は、innerText を実装するときに表示メソッドを考慮します。ブロックすると改行が追加されます
4. textContent を使用しないのはなぜですか? textContent は要素の表示モードを考慮しないため、IE と完全な互換性はありません

コードをコピー コードは次のとおりです:

cccddd< ;div>eeee
fff




今日 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;
else return false; if (!isIE()){ HTMLElement.prototype.__defineGetter__ ( "innerText", function ()
{
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 ;
}
任意の文字列を返します
}

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート