为firefox实现innerText属性

很多代码写了又忘忘了又写,很浪费,所以决定养成做笔记的习惯。

知识点:

0、为什么要innerText?因为安全问题

1、为firefox dom模型扩展属性 

2、currentStyle属性可以取得实际的style状态

3、IE实现innerText时考虑了display方式,如果是block则加换行

4、为什么不用textContent?因为textContent没有考虑元素的display方式,所以不完全与IE兼容

 

< html >
< body >
< div  id ="d1" >< href ="aa" > ccc </ a > ddd < div > eeee </ div > fff </ div >
< script  type ="text/javascript" >
<!--
//
//
 patch of innerText for firefox
//
( function  (bool) {
    
function  setInnerText(o, s) {
        
while  (o.childNodes.length  !=   0 ) {
            o.removeChild(o.childNodes[
0 ]);
        }

        o.appendChild(document.createTextNode(s));
    }

    
function  getInnerText(o) {
        
var  sRet  =   "" ;

        
for  ( var  i  =   0 ; i  <  o.childNodes.length; i  ++ ) {
            
if  (o.childNodes[i].childNodes.length  !=   0 ) {
                sRet 
+=  getInnerText(o.childNodes[i]);
            }

            
if  (o.childNodes[i].nodeValue) {
                
if  (o.currentStyle.display  ==   " block " ) {
                    sRet 
+=  o.childNodes[i].nodeValue  +   " \n " ;
                } 
else  {
                    sRet 
+=  o.childNodes[i].nodeValue;
                }
            }
        }

        
return  sRet;
    }

    
if  (bool) {
        HTMLElement.prototype.__defineGetter__(
" currentStyle " function  () {
            
return   this .ownerDocument.defaultView.getComputedStyle( this null );
        });

        HTMLElement.prototype.__defineGetter__(
" innerText " function  () {
            
return  getInnerText( this );
        })

        HTMLElement.prototype.__defineSetter__(
" innerText " function (s) {
            setInnerText(
this , s);
        })
    }
})(
/ Firefox / .test(window.navigator.userAgent));
// -->
</ script >

< script type="text/javascript">
<!--
var  d1  =  document.getElementById( " d1 " );

alert(d1.innerText);
d1.innerText 
=   " xxx " ;
// -->
</ script >
</ body >
</ html >

转载于:https://www.cnblogs.com/luoluo/archive/2008/11/24/1340111.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值