Javascript为firefox实现innerText属性
作者:admin 日期:2012-04-14
0、为什么要innerText?因为安全问题
1、为firefox dom模型扩展属性
2、currentStyle属性可以取得实际的style状态
3、IE实现innerText时考虑了display方式,如果是block则加换行
4、为什么不用textContent?因为textContent没有考虑元素的display方式,所以不完全与IE兼容
XML/HTML代码
- <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>
上一篇: 经常会用到的Javascript检测函数
下一篇: Javascript兼容 IE Firefox 的键盘控制事件
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: javascript
相关日志:
下一篇: Javascript兼容 IE Firefox 的键盘控制事件
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: javascript
相关日志:
评论: 0 | 引用: 0 | 查看次数: 1778
发表评论
广告位