innerText vs textContent - 在Firefox上出现一些错误

时间:2014-08-21 14:52:56

标签: javascript internet-explorer firefox

我的脚本在这里遇到了一些错误,在第一个我声明了var text();键入以创建包含一些文本内容的框。

var x=$('#x').text();

在我的第二个.js中我正在对这个var进行一些处理,以确保我的文本我的char值比max-length少,这里是:

var limitMaxLength = function(element) {
   var maxLength = $(element).data("max-length");
      if (maxLength) {
         $(element).on("keypress", function(event){
            if (event.target.innerText.length > maxLength || event.keyCode === 13) {
               event.preventDefault();
            }
      });
   }
};

所以我在Firefox上遇到了一些问题: [TypeError:event.target.innerText未定义]

在IE,Opera,Chrome和Safari中我的代码运行正常,我只在Firefox上出错。 *抱歉我的英语不好。

2 个答案:

答案 0 :(得分:3)

innerText是一个微软创作,从旧时代开始遗留下来。 Firefox决定不支持w3兼容,textContent。但是,IE8&下面不支持textContent,因此,如果您希望支持旧版浏览器,那么您需要进行一些绑定。

var text = elem.textContent || elem.innerText;

elem.innerHTML // eww, but it works, eh?

或者,只是放弃IE8(说起来容易做起来难,特别是在工作中)

答案 1 :(得分:1)

FF不支持

innerText

您可以使用动态属性名称来解决此问题。首先,检查支持哪个属性:

var textContent = ('textContent' in document) ? 'textContent' : 'innerText';

textContent定义为全局变量(或在最外层范围内),然后您可以像这样使用它:

var someText = elem[textContent];

此代码段为您提供textContent(如果可用),否则为innerText。另请注意,这两个属性之间存在small difference

A live demo at jsFiddle

虽然当你使用jQuery时,为什么不呢:

$(event.target).text()