| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
ページの作成:「==HTML 長い文字列の改行== *ブロック要素の中に長い文字列を置くと、折り返されない。 *例えば、IEとFirefoxでは、divタグの中…」
==HTML 長い文字列の改行==

*ブロック要素の中に長い文字列を置くと、折り返されない。
*例えば、IEとFirefoxでは、divタグの中に長い文字列を置いたときに挙動が異なる。

http://yoosee.net/d/archives/2005/01/04/002.html
http://archiva.jp/web/html-css/20060808013000.html

*GMailでは、<wbr>を使ってた。

[[File:0607_wbr.jpg]]

----
'''適当な位置に、<wbr>を入れる'''
*HTMLタグ以外の特殊文字はエスケープされていること

public static String blockComment(String value, int column) {
final String WORD_BREAK_STR = "<wbr>";

char[] c = value.toCharArray();
StringBuilder buf = new StringBuilder(c.length + 20);
boolean isInTag = false;
boolean isEscChar = false;
int charCnt = 0;

for(int i=0; i<c.length; i++) {
switch (c[i]) {
case '<': isInTag = true; break;
case '>': isInTag = false; break;
case '&': isEscChar = true; break;
case ';': isEscChar = false; break;
default:
}
if (!isInTag) {
try {
charCnt += String.valueOf(c[i]).getBytes("Shift_JIS").length;
} catch (UnsupportedEncodingException e) {}
}
if (isEscChar) {
if (c[i]=='&') {
charCnt++;
}
}
buf.append(c[i]);
if (charCnt >= column) {
buf.append(WORD_BREAK_STR);
charCnt = 0;
}
}
return buf.toString();
}

案内メニュー