关于Mozilla浏览器不支持innerText的解决办法_javascript技巧

比如:
<p id="test"><strong><font color="red">Hello</font> , world!</strong></p>
我们使用代码:alert((document.getElementById("test")).innerText)

在IE、Chrome中,均能获取到“Hello , world!”,但是在Firefox中,却得到了"undefined"。其原为是firefox中并不支持元素的innerText这个属性。当然,在网络上已经有很多好的方法来解决这个问题了,比如给HTMLElement原型添加一个属性(读取器)。

然而,所有文本节点都具有nodeValue属性,而且所有浏览器都是支持的。我们可以尝试用这种方法去读取一个HTML元素内的文本。
下面的原码,正好解决了这个问题:

复制代码 代码如下:

function getText(e) {
//若浏览器支持元素的innerText属性,则直接返回该属性
if(e.innerText) { return e.innerText; }
//不支持innerText属性时,用以下方法处理
var t = "";

//如果传入的是一个元素对象,则继续访问其子元素
e = e.childNodes || e ;

//遍历子元素的所有子元素
for(var i=0; i<e.length; i++) {
//若为文本元素,则累加到字符串t中。
if(e[i].nodeType == 3) { t += e[i].nodeValue; }

//否则递归遍历元素的所有子节点
else { t += getText(e[i].childNodes); }
}

return t;
}

有了这个函数,我们再来看看如下DOM结构:
<p id="test"><strong><font color="red">Hello</font> , world!</strong></p>
然后,我们用:
alert(getText(document.getElementById("test"));
在IE、Chrome、Firefox中均能获取到 "Hello, world!"

时间: 2024-10-29 21:47:47

关于Mozilla浏览器不支持innerText的解决办法_javascript技巧的相关文章

firefox浏览器不支持innerText的解决方法_javascript技巧

js代码: 复制代码 代码如下: <script> window.onload = function(){ <PRE class=javascript name="code">if(window.navigator.userAgent.toLowerCase().indexOf("msie")==0){ //firefox innerText HTMLElement.prototype.__defineGetter__( "inne

IE浏览器不支持getElementsByClassName的解决方法_javascript技巧

在DOM3里已经加入了getElementsByClassName这个方法,然而IE9.10以外的其它版本均不支持,这是一块伤痛啊! 目前可以这么解决,判断浏览器支不支持这个方法,如果支持就不管:如果不支持,就在document对象里加入getElementsByClassName这个方法,这样的写法有一个好处,即不管有没有原生函数你都不用去修改代码. 网上部分人直接定义一个getElementsByClassName函数,但是这样的话就需要把代码中所有使用document.getElement

访问本页面 您的浏览器需要支持JavaScript的解决办法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 百度site:首页出现"访问本页面,您的浏览器需要支持JavaScript".这样的情况,对于一个刚刚引起搜索引擎重视的新站来说是相当大的打击,需要尽快找出原因跟解决办法. 首先分析原因,用站长工具模拟搜索引擎蜘蛛抓取,结果却是"访问本页面,您的浏览器需要支持JavaScript".用谷歌管理员工具中实

让FireFox支持innerText的实现代码_javascript技巧

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

全系IE支持Bootstrap的解决方法_javascript技巧

最近做一个Web网站,之前一直觉得bootstrap非常好,这次使用了bootstrap3,在chrome,firefox,safari,opera,360浏览器(极速模式).搜狗浏览器等浏览器下均没有问题,而在IE8及IE11下发现样式无法显示,然后各种百度啊,最后在一个网友帖子的帮助下解决了问题,先将解决方法总结如下: 首先需要确保你的HTML页面开始部分要有DOCTYPE声明.DOCTYPE告诉浏览器使用什么样的HTML或XHTML规范来解析HTML文档,具体会影响: 对标记attribu

关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法_javascript技巧

前端JS中使用XMLHttpRequest 2上传图片到服务器,PC端和大部分手机上都正常,但在少部分安卓手机上上传失败,服务器上查看图片,显示字节数为0.下面是上传图片的核心代码: HTML <input type="file" id="choose" capture="camera" accept="image/*"> JavaScript var filechooser = document.getEleme

JavaScript 验证浏览器是否支持javascript的方法小结_javascript技巧

效果:  先来看看别的网站是怎么做的: google.com的登录: 客户端 和服务器端都验证了,并且提示信息一样的 baidu.com 的登录: 屏蔽了密码输入框 http://fanfou.com/register : 客户端和后台都验证了,但是提示的信息方式不一样 http://login.xiaonei.com/Login.do : 用户禁用Js后有提示信息 我的实现步骤: 思想: 1,默认(禁用js)submit按钮式不显示的,如果启用后,就显示submit按钮 2,通过<noscri

javascript检查浏览器是否支持flash的实现代码_javascript技巧

javascript检查浏览器是否支持flash,程序输出结果: <script> function flashChecker() { var hasFlash = 0; //是否安装了flash var flashVersion = 0; //flash版本 if (document.all) { var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); if (swf) { hasFlash = 1; VSwf = swf.

js判断浏览器是否支持严格模式的方法_javascript技巧

设立"严格模式"的目的,主要有以下几个: - 消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; - 消除代码运行的一些不安全之处,保证代码运行的安全: - 提高编译器效率,增加运行速度: - 为未来新版本的Javascript做好铺垫. "严格模式"体现了Javascript更合理.更安全.更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它. 另一方面,同样的代码,在"严格模式"中