무시무시한 소문을 안고 다니는 녀석이죠.
오늘 max-height 때문에 expression을 써야하나 고민을 잠깐 하다가
max-height 같은 경우는 position: fixed 처럼 계속해서 읽어드릴 필요가 없이
페이지 열릴때 한번만 잡아주면 되거든요.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>One-Time Expressions</title>
<style type="text/css">
.onetime {
width: 200px;
padding: 10px;
border: 2px solid #666;
overflow: hidden;
/* 생각없이 쓴 expression */
height: expression( setCntr(), this.scrollHeight > 99 ? "100px" : "auto" );
/* 멋진 아저씨가 추천한 방법 */
/*height: expression(
setCntr(),
new Function('el', 'el.style.height = el.scrollHeight > 99 ? "100px" : "auto";')(this)
);*/
}
</style>
<script type="text/javascript">
//<![CDATA[
var gnExpr = 0;
var gCntrDisplay;
var gbOn = true;
function setCntr() {
gnExpr++;
if ( gbOn ) {
displayCntr();
}
return true;
}
function displayCntr() {
if ( ! gCntrDisplay ) {
gCntrDisplay = document.getElementById("cntrdisp");
}
if ( gCntrDisplay ) {
gCntrDisplay.value = gnExpr;
}
}
function setDisplay(bOn) {
gbOn = bOn;
}
//]]>
</script>
</head>
<body>
<input type="text" size="10" id="cntrdisp" disabled="disabled"/>
<div class="onetime">
(마우스를 움직여보세요.)
우리는 달려간다 이상한 나라로 니나가 잡혀있는 마왕의 소굴로
어른들은 모르는 사차원세계 날쌔고 용감한 폴이 여깄다
마술차 마술봉 딱부리 삐삐 찌찌 힘을 모으자 대마왕 손아귀에 니나를 구해내자
띠이빠빠 띠이빠빠 달려간다 삐삐
</div>
<p>출처 : http://stevesouders.com/hpws/onetime-expressions.php</p>
</body>
</html>'생각없이 쓴 expression' 부분과
주석부분을 바꿔서 열어보시면 차이를 바로 알 수 있습니다.
(정말로 딱 1개만 찍히네요. 오우 신기.)
결론 : expression 한번만 실행시키기.
CSSproperty: expression(new Function('el', 'el.style.CSSproperty = 어쩌구 저쩌구 계산식')(this)
);
하지만 이방법도 완전한 해결책은 아니라고 하네요~
expression 자체가 위험하긴 하나봅니다. IE8에서도 내다버린 녀석이니까요.
Posted by mkyoon
