innerhtmlinnerHTML用途

innerhtml  时间:2022-02-23  阅读:()

innerHTML用途

innerHTML 属性的使用非常流行,因为他提供了简单的方法完全替代一个 HTML 元素的内容。另外一个方法是使用 DOM Level 2 API(removeChild, createElement, appendChild)。但很显然,使用 innerHTML 修改 DOM tree 是非常容易且有效的方法。然而,你需要知道 innerHTML 有一些自身的问题: 当 HTML 字符串包含一个标记为 defer 的 script 标签(<script defer>…</script>)时,如 innerHTML 属性处理不当,在 Explorer 上会引起脚本注入攻击。 设置 innerHTML 将会破坏现有的已注册了事件处理函数的 HTML 元素,会在某些浏览器上引起内存泄露的潜在危险。 还有几个其他次要的缺点,也值得一提的: 你不能得到刚刚创建的元素的引用,需要你手动添加代码才能取得那些引用(使用 DOM APIs)。 你不能在所有浏览器的所有 HTML 元素上设置 innerHTML 属性(比如, Explorer 不允许你在表格的行元素上设置innerHTML 属性)。 我更关注与使用 innerHTML 属性相关的安全和内存问题。很显然,这不是新问题,已经有能人围绕这些中的某些问题想出了方法。 Douglas Crockford 写了一个 清除函数 ,该函数负责中止由于 HTML 元素注册事件处理函数引起的一些循环引用,并允许垃圾回收器(garbage collector)释放与这些 HTML 元素关联的内存。 从 HTML 字符串中移除 script 标签并不像看上去那么容易。一个正则表达式可以达到预期效果,虽然很难知道是否覆盖了所有的可能性。这里是我的解决方案: /<script[^>]*>[Ss]*?</script[^>]*>/ig 现在,让我们将这两种技术结合在到一个单独的 setInnerHTML 函数中,并将 setInnerHTML 函数绑定到 YUI 的 YAHOO.util.Dom 上: YAHOO.util.Dom.setInnerHTML = function (el, html) { el = YAHOO.util.Dom.get(el); if (!el || typeof html !== ’string’) { return null; } // 中止循环引用 (function (o) { var a = o.attributes, i, l, n, c; if (a) { l = a.length; for (i = 0; i < l; i += 1) { n = a[i].name; if (typeof o[n] === ’function’) { o[n] = null; } } } a = o.childNodes; if (a) { l = a.length; for (i = 0; i < l; i += 1) { c = o.childNodes[i]; // 清除子节点 arguments.callee(c); // 移除所有通过YUI的addListener注册到元素上所有监听程序 YAHOO.util.Event.purgeElement(c); } } })(el); // 从HTML字符串中移除script,并设置innerHTML属性 el.innerHTML = html.replace(/<script[^>]*>[Ss]*?</script[^>]*>/ig, ""); // 返回第一个子节点的引用 return el.firstChild; };

ATCLOUD-KVM架构的VPS产品$4.5,杜绝DDoS攻击

ATCLOUD.NET怎么样?ATCLOUD.NET主要提供KVM架构的VPS产品、LXC容器化产品、权威DNS智能解析、域名注册、SSL证书等海外网站建设服务。 其大部分数据中心是由OVH机房提供,其节点包括美国(俄勒冈、弗吉尼亚)、加拿大、英国、法国、德国以及新加坡。 提供超过480Gbps的DDoS高防保护,杜绝DDoS攻击骚扰,比较适合海外建站等业务。官方网站:点击访问ATCLOUD官网活...

inux国外美老牌PhotonVPS月$2.5 ,Linux系统首月半价

PhotonVPS 服务商我们是不是已经很久没有见过?曾经也是相当的火爆的,我们中文习惯称作为饭桶VPS主机商。翻看之前的文章,在2015年之前也有较多商家的活动分享的,这几年由于服务商太多,乃至于有一些老牌的服务商都逐渐淡忘。这不有看到PhotonVPS商家发布促销活动。PhotonVPS 商家七月份推出首月半价Linux系统VPS主机,首月低至2.5美元,有洛杉矶、达拉斯、阿什本机房,除提供普...

CloudCone,美国洛杉矶独立服务器特价优惠,美国洛杉矶MC机房,100Mbps带宽不限流量,可选G口,E3-1270 v2处理器32G内存1Gbps带宽,69美元/月

今天CloudCone发布了最新的消息,推送了几款特价独立服务器/杜甫产品,美国洛杉矶MC机房,分配100Mbps带宽不限流量,可以选择G口限制流量计划方案,存储分配的比较大,选择HDD硬盘的话2TB起,MC机房到大陆地区线路还不错,有需要美国特价独立服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2...

innerhtml为你推荐
detected电脑打不开出来个invalid signature detected check secure策略组简述组策略的概念 急急急bindservice安卓里 remote service到底有什么用拓扑关系什么是矢量数据、栅格数据、拓扑关系?调度系统生产调度系统保留两位有效数字什么叫保留两位有效数字spawningVC中Error spawning cl.exe错误的解决方法.什么是句柄按键精灵的句柄是什么?mergecellsExcel 合并及计数宏 VBAalphablend请教函数TransparentBlt的用法
云主机租用 主机租赁 中文域名 工信部域名备案系统 骨干网 enzu 视频存储服务器 特价空间 512au patcha 智能骨干网 微信收钱 服务器合租 33456 银盘服务是什么 七夕快乐英语 web服务器是什么 视频服务器是什么 iki 镇江高防 更多