zoukankan      html  css  js  c++  java
  • 为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(thisnull);
            });

            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>
  • 相关阅读:
    bzoj1934 Vote 善意的投票 最小割(最大匹配)
    poj3417 Network 树上差分+LCA
    bzoj1076 奖励关 期望dp
    bzoj1087 互不侵犯King 状压dp+bitset
    bzoj1041 圆上的整点 数学
    bzoj 1085骑士精神 迭代深搜
    CodeForces 1043D Mysterious Crime 区间合并
    2018.12.14 浪在ACM 集训队第九次测试赛
    2018.12.9 中国石油大学第四次新生训练赛题解
    2018.12.8 中国石油大学第三次新生训练赛题解
  • 原文地址:https://www.cnblogs.com/luoluo/p/1340111.html
Copyright © 2011-2022 走看看