none
Windows7 , IE8にて禁則処理を無効に出来ない

    質問

  • みなさま、よろしくお願いいたします。

    Windows7, IE8のTextAreaにて、禁則処理を無効にしたいと思っています。

    しかし、word-breakなど、CSSを使用しても無効にすることは出来ません。

    当方、画面の情報を変数に取得し、別のデータに渡すため、見たままを取得したいと考えています。

    何か、方法はありませんでしょうか。


    よろしくお願いします。

    2012年3月15日 7:44

回答

  • 禁則処理に影響するのはline-breakプロパティですが、有効・無効ではなく厳密さを指定するものとのことです。ご参考まで。

    CSS 3におけるテキストの自動改行と禁則処理の定義 - builder

    一方、Internet Explorerの場合、word-breakプロパティの指定は禁則処理には影響しない。Internet Explorerではline-breakプロパティで禁則処理に関する設定を行うようになっている。 line-breakプロパティでは禁則処理の有効・無効ではなく、厳密さを指定する。指定できる値は「normal」と「strict」の2種類で、「normal」では緩い禁則処理が、「strict」では厳密な禁則処理が行われる。 たとえば、「normal」では小さい「っ」や長音符「ー」は禁則処理の対象にならないが、「strict」では禁則処理の対象となる。一方、句読点や閉じ括弧はline-breakプロパティの指定とは関係なく、常に禁則処理の対象となる。

    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/


    2012年3月15日 8:11
  • 見た目と一致させたいため、特定の条件でよいので、
    禁則処理が一切発生しないように出来る機能が実現できると便利ですし、私も理解出来ます。
    !とか、。とか人々の々とかですよね。

    案出しレベルですが、回避案として4つほど、
    ①textareaでwrap="off"やnowrapを指定することで、そもそも折り返されないようにして回避します。
    ②textareaでの編集モードとは"別"に最終的な表示用の別画面を用意し、
      表示用画面は、リアルタイムに横に表示するなり、フォーカス外れた際にtextareaから表示モードに切り替えるなどにします。
      表示用の整形処理を"別のデータに渡す"際にも、適用するイメージです。
      もし、渡した先もブラウザに表示するために使われるなら整形処理は不要かもです。
    ③Silverlight等のブラウザプラグインのエディットコンポーネントで回避可能?
    ④逆転の発想で、テキストエリアをリサイズ可能にして、
      サイト利用者が見た目と一致すると期待する可能性を低減してみる案は通るでしょうか。
     
    また、IEとバトルする?案もいくつかありそうですが、
    ⑤不自然な動作は残りそうですが、
      あらゆる入力イベント(低:キー、マウス、高:copy&paste、D&D等)をハンドリングし、つど整形します。
     ブラウザによる禁則処理が発生しないよう、自動改行を手で行うイメージです。
     必要に応じて、1文字または一定の単位でノードやElementに分解します。(近い例)
    ⑥textareaではなく、Content-Editable上であれば、「つど整形」が楽になる場合がありそうです。

     
    【その他】
    word-break: break-allサンプルを見て、どんなときも折り返してくれそうと思って、でもされないケースがあるがっかり感。
    http://www.w3.org/TR/css3-text/#word-break
     Unicode Line Breaking Algorithm
    http://unicode.org/reports/tr14/

    2012年3月15日 17:01

すべての返信

  • 禁則処理に影響するのはline-breakプロパティですが、有効・無効ではなく厳密さを指定するものとのことです。ご参考まで。

    CSS 3におけるテキストの自動改行と禁則処理の定義 - builder

    一方、Internet Explorerの場合、word-breakプロパティの指定は禁則処理には影響しない。Internet Explorerではline-breakプロパティで禁則処理に関する設定を行うようになっている。 line-breakプロパティでは禁則処理の有効・無効ではなく、厳密さを指定する。指定できる値は「normal」と「strict」の2種類で、「normal」では緩い禁則処理が、「strict」では厳密な禁則処理が行われる。 たとえば、「normal」では小さい「っ」や長音符「ー」は禁則処理の対象にならないが、「strict」では禁則処理の対象となる。一方、句読点や閉じ括弧はline-breakプロパティの指定とは関係なく、常に禁則処理の対象となる。

    Blog:プログラマーな日々 http://d.hatena.ne.jp/JHashimoto/


    2012年3月15日 8:11
  • 見た目と一致させたいため、特定の条件でよいので、
    禁則処理が一切発生しないように出来る機能が実現できると便利ですし、私も理解出来ます。
    !とか、。とか人々の々とかですよね。

    案出しレベルですが、回避案として4つほど、
    ①textareaでwrap="off"やnowrapを指定することで、そもそも折り返されないようにして回避します。
    ②textareaでの編集モードとは"別"に最終的な表示用の別画面を用意し、
      表示用画面は、リアルタイムに横に表示するなり、フォーカス外れた際にtextareaから表示モードに切り替えるなどにします。
      表示用の整形処理を"別のデータに渡す"際にも、適用するイメージです。
      もし、渡した先もブラウザに表示するために使われるなら整形処理は不要かもです。
    ③Silverlight等のブラウザプラグインのエディットコンポーネントで回避可能?
    ④逆転の発想で、テキストエリアをリサイズ可能にして、
      サイト利用者が見た目と一致すると期待する可能性を低減してみる案は通るでしょうか。
     
    また、IEとバトルする?案もいくつかありそうですが、
    ⑤不自然な動作は残りそうですが、
      あらゆる入力イベント(低:キー、マウス、高:copy&paste、D&D等)をハンドリングし、つど整形します。
     ブラウザによる禁則処理が発生しないよう、自動改行を手で行うイメージです。
     必要に応じて、1文字または一定の単位でノードやElementに分解します。(近い例)
    ⑥textareaではなく、Content-Editable上であれば、「つど整形」が楽になる場合がありそうです。

     
    【その他】
    word-break: break-allサンプルを見て、どんなときも折り返してくれそうと思って、でもされないケースがあるがっかり感。
    http://www.w3.org/TR/css3-text/#word-break
     Unicode Line Breaking Algorithm
    http://unicode.org/reports/tr14/

    2012年3月15日 17:01
  • こんにちは。
    フォーラム オペレーターの田中夢です。

    J.Hashimoto さん、(´・ω・`) さん
    いつも参考になるアドバイスをありがとうございます。

    Shunji Kimura さん
    質問を投稿されてからしばらく経過しましたが、その後 J.Hashimoto さんと(´・ω・`) さんからの投稿をご覧になっていただけましたか?

    今回のご質問につきましては、 J.Hashimoto さんと(´・ω・`) さんからのアドバイスを参考にしていただけたのではないかと思われますので、勝手ながら私のほうで [回答としてマーク] とさせていただきますね。


    また何かありましたら TechNet フォーラムをご利用くださいね。
    ---------------------------------------------------------------------
    日本マイクロソフト株式会社 フォーラム オペレーター 田中夢

    2012年3月28日 8:21