一段未优化过的无聊JS代码,暂时不优化了,以实现为主:
XML/HTML代码
- <style type="text/css">.zxx_text_overflow_6{ width:100px; height:100px; border:1px solid #CCC; }</style>
- <div class="zxx_text_overflow_6">
- <img src="i.png" alt="" style="float:right;width:50px;" />
- <p>你个杀千刀的,怎么写了这么多的文字,我要被拦腰截。断了啊,kitty救我!你个杀千刀的,怎么写了这么多的文字,我要被拦腰截断了啊,kitty救我!你个杀千刀的,怎么写了这么多的文字,我要被拦腰截断了啊,kitty救我!你个杀千刀的,怎么写了这么多的文字,我要被拦腰截断了啊,kitty救我!你个杀千刀的,怎么写了这么多的文字,我要被拦腰截断了啊,kitty救我!</p>
- </div>
- <script type="text/javascript">
- String.prototype.strtoarray=function (){
- var t=[], b=/(\s*[\S\u00ad]+\s*)/g, f='';
- for(i=0; i<this.length; i++){
- c=this.charCodeAt(i);
- t.push(c>128?" "+this.charAt(i):this.charAt(i));//p += c < 128 ? 1 : (c < 2048 ? 2 : (c < 65536 ? 3 : 4));
- }
- //s = t.join("").split(b);
- return t.join("").split(b).join("Ω").replace(/ΩΩ/g,"Ω").split("Ω"); //这一段其实挺有意思,理论上,上一句就OK了,但事实上这一句才正常。。。好吧。
- // return s;
- }
- var t = +new Date();
- var d=document.querySelector(".zxx_text_overflow_6");
- var p=document.querySelector(".zxx_text_overflow_6 p");
- var pInfo = getComputedStyle(p);
- var s=p.innerHTML.strtoarray();
- var pData = [];
- p.innerHTML='';
- for(var i=0; i<s.length; i++){
- p.innerHTML+=s[i];
- pData.push(s[i]);
- if((p.offsetHeight+parseInt(pInfo.marginTop)+parseInt(pInfo.paddingTop))>= d.offsetHeight){
- if(s[i-1]!="。"||s[i-1]!='.'){
- p.innerHTML = pData.slice(0,-2).join("")+ "...";
- }else{
- p.innerHTML = pData.slice(0,-1).join("");
- }
- break;
- }
- }
- alert("执行时间" +((+new Date()) - t )/ 1000 + "秒");
- </script>