前言
HTML5有contenteditable
屬性,可以達到類似textarea
的效果。
差異
原理大致上和textarea
差不多,但如果換行會產生新的子區塊而不是產生換行字元,因此必須使用keydown
將動作替換成插入<br>
,但若只插入一個<br>
在文字的最後無法換行,等待之後尋求更好的解法。123456789101112131415161718192021text.onkeydown = function(e){ if ( e.keyCode === 13) { document.execCommand('insertHTML', false, '<br><br>'); }}var getTextMaxLength = function(text,font,size){ var s = "" ; var t = (text.innerHTML).replace(" ",' ') ; var max = 0 ; var row = 0 ; for ( var i = 0 ; t.indexOf("<br>") !== -1 ; i ++ , row = i ){ max = Math.max(max,getTextWidth(t.substring(0,t.indexOf("<br>")-1),font,size)) ; t = t.substring(t.indexOf("<br>")+4,t.length) ; } if ( t !== "" ){ max = Math.max(max,getTextWidth(t,font,size)) ; row ++ ; } return {row:row,length:max} ;}