ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptのラインエンディング
私は今日の大半をJavaScriptのラインエンディングと戦っていましたが、最終的に共有する価値のあるいくつかの結果を見つけました。
ご存知かもしれませんが、謙虚なラインブレイクには、どのオペレーティングシステムが破損しているかに応じて、実際には3つのフォームがあります。 Unixマシンでは、単一の新しいライン文字「n」がジョブを行います。 Macでは、キャリッジリターン「R」が使用されます。 DOSとWindowsは両方を使用しています:「RN」。それは、何を見ているのかわからない場合、あなたを強く噛むことができる比較的微妙な問題の1つです。今日、私はJavaScript関数を構築して、単一のNewlinesをTextarea内のNewlinesを2倍にするという単純な問題を任されました。私の最初の試みは次のように見えました:
var doublenewlinesre = /([^n])n([^n]) /g; 関数doubleNewlines(obj){ obj.value = obj.value.replace(doublenewlinesre、 "$ 1nn $ 2"); } double newlines 上記のコードでは、新しいラインではないもののすべてのインスタンスを見つける単純な正規表現を使用し、その後に新しいラインが続き、その後に新しいラインではない他のものが続きます。このパターンのインスタンスは、1つではなく中央に2つのニューラインで同じパターンに置き換えられます。 Firefoxは、どんなプラットフォームで実行されていても、Newlinesを「n」として扱うため、これはWindows、Linux、Macの両方のFirefoxで正常に機能しました。これらのブラウザはそれぞれ「RN」と「R」を使用しているため、WindowsとIEはMacintoshの場合に壊れました。十分に公平です。この問題の通常の解決策は、3つの組み合わせのそれぞれをあなたの好みの単一の結末(私の場合は「n」)に置き換えることにより、変換を実行する前にラインエンディングを正規化することです。これが関数での私の2回目の試みです:
関数doubleNewlines(obj){
obj.value = obj.value.replace(/(rn | r | n)/g、 'n');
obj.value = text.replace(doublenewlinesre、 "$ 1nn $ 2");
}
それもうまくいきませんでした。多くの頭をひっかき、アラートボックスでデバッグし、突っ込んだ後、私は最終的に文書化されていない、ほとんど心の曖昧な「機能」を発見しました。インターネットエクスプローラーの「機能」:入力オブジェクトの値属性に文字列を割り当てるとき、すなわち素敵な「n」ラインのエンディングをプラットフォームの優先に変換します。 Microsoftのドキュメントはこれに注目していませんが、これがインターネットエクスプローラーのWindowsバージョンとMacバージョンの両方で発生することを確認しました。
bizzalely、隠しフォームフィールドオブジェクトの値属性に割り当てる場合、変換は行われません。ラインエンディングは、テキスト領域に割り当てた場合にのみ変更されます。次のコードは、リストされているコードとの関数は一見同一であるように見えますが、私が望んでいることを正確に行います。関数doubleNewlines(obj){ var text = obj.value; text = text.replace(/(rn | r | n)/g、 'n'); obj.value = text.replace(doublenewlinesre、 "$ 1nn $ 2"); }
正規化されたバージョンは、TextAreaオブジェクトの値属性に直接割り当てられるのではなく、変数に割り当てられているため、これは正常に機能します。したがって、IEの自動ラインエンディング変換は、スクリプトの終了まで遅延し、2番目の正規表現で大混乱を再生できません。
関数doubleNewlines(テキスト){ text = text.replace(/(rn | r | n)/g、 'n'); return text.replace(doublenewlinesre、 "$ 1nn $ 2"); } double newlines
OnClickハンドラーでもう少しコードが必要ですが、文字列操作だけを抽象化しますが、変換の問題を完全に回避しました。それでも、少なくとも私はIEの小さな癖のもう1つを理解してくれました。
JavaScriptのラインエンディングに関するよくある質問(FAQ)
はい、HTMLコンテンツを使用しているときにJavaScriptのラインブレークにHTMLタグを使用できます。 「
」タグを使用して、ラインブレークを追加できます。たとえば、「hello
world」は、HTMLドキュメントに表示されると「Hello」と「World」の間にラインブレークを追加します。 JavaScriptのシングルラインコメントは「//」で始まり、ラインブレークで終了します。同じ行の「//」の後のすべてがコメントと見なされ、JavaScriptインタープリターによって無視されます。このシーケンスは、新しいライン文字を文字列に挿入し、ラインブレークを効果的に作成します。
ラインエンディングを使用してJavaScriptコードをフォーマットできますか?ラインエンディングを適切に使用すると、コードがより読みやすく、メンテナンスが容易になります。各ステートメントの新しい行を開始するか、コードのブロック(関数やループなど)の後に開始することは一般的な慣行です。
以上がJavaScriptのラインエンディングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。