很多代码写了又忘忘了又写,很浪费,所以决定养成做笔记的习惯。
知识点:
0、为什么要innerText?因为安全问题
1、为firefox dom模型扩展属性
2、currentStyle属性可以取得实际的style状态
3、IE实现innerText时考虑了display方式,如果是block则加换行
4、为什么不用textContent?因为textContent没有考虑元素的display方式,所以不完全与IE兼容
<
html
>
< body >
< div id ="d1" >< a 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 >
< body >
< div id ="d1" >< a 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 >