「HTML 長い文字列の改行」の版間の差分
ナビゲーションに移動
検索に移動
| 1行目: | 1行目: | ||
| − | ==HTML 長い文字列の改行== | + | ==[[HTML 長い文字列の改行]]== |
*ブロック要素の中に長い文字列を置くと、折り返されない。 | *ブロック要素の中に長い文字列を置くと、折り返されない。 | ||
| − | * | + | *例えば、[[IE]]とFirefoxでは、divタグの中に長い文字列を置いたときに挙動が異なる。 |
http://yoosee.net/d/archives/2005/01/04/002.html | http://yoosee.net/d/archives/2005/01/04/002.html | ||
| 13行目: | 13行目: | ||
---- | ---- | ||
'''適当な位置に、<wbr>を入れる''' | '''適当な位置に、<wbr>を入れる''' | ||
| − | * | + | *[[HTML]]タグ以外の特殊文字はエスケープされていること |
public static String blockComment(String value, int column) { | public static String blockComment(String value, int column) { | ||
| − | final String | + | final String WO[[R]]D_B[[R]]EAK_ST[[R]] = "<wbr>"; |
char[] c = value.toCharArray(); | char[] c = value.toCharArray(); | ||
| 44行目: | 44行目: | ||
buf.append(c[i]); | buf.append(c[i]); | ||
if (charCnt >= column) { | if (charCnt >= column) { | ||
| − | buf.append( | + | buf.append(WO[[R]]D_B[[R]]EAK_ST[[R]]); |
charCnt = 0; | charCnt = 0; | ||
} | } | ||
2020年2月16日 (日) 04:26時点における最新版
HTML 長い文字列の改行
- ブロック要素の中に長い文字列を置くと、折り返されない。
- 例えば、IEとFirefoxでは、divタグの中に長い文字列を置いたときに挙動が異なる。
http://yoosee.net/d/archives/2005/01/04/002.html http://archiva.jp/web/html-css/20060808013000.html
- GMailでは、<wbr>を使ってた。
適当な位置に、<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();
}
© 2006 矢木浩人
