airhead (13423) の日記

2004 年 02 月 03 日
午後 12:33

memo: 文字列折り返しに関するIEの挙動

もしかしてIEはURLっぽくみえたら自動的にリンクと見なしてしまうようなHTMLパーザとしてはやりすぎの仕様でも持っているのでしょうか?

いいえ、そういうことはないのでご安心ください。つまりですね、IEは、検索クエリーURLのような長い文字列を途中で折り返して表示する場合があるのです。順を追って説明すると、空白文字は折り返し位置の候補になります。次の例の1行目はブラウザの表示域の幅次第で、矢印の後に示したように折り返される可能性がありますよね。

  • aaaaaaaa bbbbbbbb

    aaaaaaaa
    bbbbbbbb

IEエンジンは空白文字に加えて、特定の記号の前後も改行位置の候補にします。

  • 記号の直後が折り返し位置の候補になります。

    aaaaaaaa%bbbbbbbb
    aaaaaaaa?bbbbbbbb
    aaaaaaaa-bbbbbbbb
    aaaaaaaa)bbbbbbbb

    aaaaaaaa)
    bbbbbbbb
  • 記号の直前が折り返し位置の候補になります。括弧の類はその外側の位置が候補になるのです。

    aaaaaaaa(bbbbbbbb

    aaaaaaaa
    (bbbbbbbb
  • しかし、次の記号の前後は折り返し位置の候補になりません。

    aaaaaaaa.bbbbbbbb
    aaaaaaaa/bbbbbbbb
    aaaaaaaa&bbbbbbbb
    aaaaaaaa=bbbbbbbb

    aaaaaaaa=bbbbbbbb

URLエンコードに用いられる記号「%」が折り返し候補になるのが幸いしたのか、もともと意図された仕様なのかわかりませんが、IEエンジンは検索クエリーURLのような長い文字列を途中で折り返して表示する場合があるのです。

とはいえ、URLに使われることが多い記号のなかでも折り返し候補ができるのは「%」「?」「:」など少数なので、「http://srad.jp/article/04/02/02/095240.shtml」のような文字列はIEでも途中で折り返されません。「IEでは折り返されるからURLをベタ書きしていい」というのは、限られた経験に基づく言い訳でしかないでしょう。

(このエントリはコメントの追加説明です。一部読みづらいことについてはご容赦を。)

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond

処理中...