innerText在mozilla firefox中给出错误(计算html的单词和字符)

时间:2009-12-23 08:42:18

标签: javascript cross-browser

我想算一些单词& html文本(TEMP)中的字符数,

在执行此操作时,我想跳过HTML标记和html关键字(ex.  

假设我在我的JavaScript函数中获取HTML文本

var TEMP= result.data;  

// where result.data='<p>BODY&nbsp;Article By Archie(Used By Story Tool)</p>';

我做到了这一点:

var e = document.createElement("span");
        e.innerHTML = TEMP;
        var text = e.innerText;
        var characterCount = text.length;                    
        var wordCount = text.match(/\b\w/g).length;

适用于Internet Explorer&amp;铬,

但是这段代码在mozilla firefox中不起作用,因为上面的代码有 .innerText 属性,FireFox不支持 我也试过o.k.w的code但是没有在mozilla中工作

o.k.w的代码

function getCharCount(str){
    var d = document.createElement("div");
    d.innerHTML = str;
    if(d.innerText) //for IE and others
        alert(d.innerText.length);
    else //for FF
        alert(d.textContent.length);
}

请帮助

重要这应该适用于所有(IE,Chrome,Mozilla Firefox)浏览器。

我们可以检测浏览器(ch,IE,FF)并相应地更改代码。?

还有其他方法来计算单词和字符以避免此问题吗?

2 个答案:

答案 0 :(得分:3)

Hai elcon,

你可以在mozilla中使用“textContent”,这相当于IE中的“innerText”。

function getInnerText(o)
 {
   return o.textContent ? o.textContent : o.innerText;
 }

答案 1 :(得分:0)

如果你想让浏览器独立使用这个代码

var field = document.getElementById(id);  // where u want to use innertext

if(field != null)
{           
        if(navigator.appName == "Netscape") // appName for both FireFox and Chrome its is "Netscape" i checked it with different version.

            field.textContent = value;

        else // for For IE v 8 i checked  .textContent is not supported by IE for me it was not working. 

            field.innerText = value;    
}