픽셀단위 문자열 자르기 (한글자르기)
인터넷정보2007. 10. 11. 23:33
JavaScript용 픽셀단위 문자열 자르기
// by ziecle 07.02.06
function __getText(elem)
{
if (elem.innerText) return elem.innerText;
if (elem.textContent) return elem.textContent;
return elem.innerHTML.replace(/<\/?[^>]+>/gi,"");
}
function __setText(elem, text)
{
if (elem.innerText) { elem.innerText = text; return; }
if (elem.textContent) { elem.textContent = text; return; }
while (elem.firstChild) elem.removeChild(elem.firstChild);
elem.appendChild(document.createTextNode(text), elem.childNodes[0]);
}
function stringCut(elem, cutWidth, suffix)
{
var str = __getText(elem);
var len;
if (!str || !(len = str.length))
return;
elem.style.whiteSpace = "nowrap";
elem.style.textOverflow = "ellipsis";
elem.style.overflow = "hidden";
var width = elem.offsetWidth;
if (!width || width < cutWidth - 8)
return;
var temp = cutWidth;
if (suffix)
{
elem.innerHTML += suffix;
cutWidth -= (elem.offsetWidth - width + 4);
if (cutWidth < 0)
return;
}
else
{
suffix = "";
}
elem.title = str;
var cut = parseInt(cutWidth / (width / len)) + 1;
__setText(elem, str.substr(0, cut));
if (elem.offsetWidth > cutWidth)
{
while (--cut)
{
__setText(elem, str.substr(0, cut).replace(/(\s*$)/g, ""));
if (elem.offsetWidth < cutWidth)
{
break;
}
}
}
else
{
while (cut++ < len)
{
__setText(elem, str.substr(0, cut));
if (elem.offsetWidth > cutWidth)
{
__setText(elem, str.substr(0, cut - 1).replace(/(\s*$)/g, ""));
break;
}
}
}
elem.innerHTML += suffix;
}
방법은 무식합니다.
IE 6, 파폭 2.0.0.1에서 테스트했습니다.
사용법:
stringCut(문자열이 들어가는 엘리먼트, 너비, 붙을단어);
예제:
랄랄랄라~라랄라~랄랄랄라~라랄라~랄랄랄라~라랄라~랄랄랄라~라랄라~
'인터넷정보' 카테고리의 다른 글
설문조사 등등 로딩바 구현 (0) | 2007.10.11 |
---|---|
AJAX를 이용한 메모보드(포스트잇) (0) | 2007.10.11 |
PHP로 작동하는 RSS 읽는 함수 (0) | 2007.10.11 |
심플한 라이트박스 효과 (이미지, 아이프레임, html 지원) (0) | 2007.10.11 |
HTTP 인증(Basic타입)이 걸린 URL을 fsockopen에서 여는 방법 (0) | 2007.10.11 |
설치가 필요없는 ftp, telnet 프로그램 (0) | 2007.10.11 |
파폭에서 익스플로러를 쓰자 (0) | 2007.10.11 |
상하 좌우 롤링 소스 (0) | 2007.10.11 |
로깅(Logging) 하기 (0) | 2007.10.11 |
인기도 점수 뽑아오는 클래스(추천 비추천 코멘트 히트수) (0) | 2007.10.11 |