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>
  • 相关阅读:
    元数据Metadata
    博客园如何使用MarkDown
    zookeeper集群搭建
    Java 疑问自问自答
    R中rep函数的使用
    R中unlist函数的使用
    Windows7 系统 CMD命令行,点阵字体不能改变大小以及中文乱码的问题
    C# ConfigurationManager不存在问题解决
    Servlet中的请求转发RequestDispatcher接口的forword与Include的区别
    Servlet中的乱码问题及解决办法
  • 原文地址:https://www.cnblogs.com/luoluo/p/1340111.html
Copyright © 2011-2022 走看看