我有一些代码,这些代码是几年前编写的,仅适用于IE。我想,现在让它与浏览器一起使用。
因此,代码通过XHR接收XML,然后读取其内容。我有一个元素的“集合”。在FF中,类型为元素,在IE中 IXMLDOMElement 。要使阅读文本值统一(FF使用 textContent 属性,IE 文本),我想添加如下方法:
Element.prototype.getText = function() {
return this.text || this.textContent;
}
但是,当我尝试在IE中使用 IXMLDOMElement 而不是元素执行此操作时,我得到错误(在IE中),未定义IXMLDOMElement。如果是那种类型的东西怎么定义? (在IE的开发工具中查看)
任何人都可以给我任何建议,暗示如何处理这个问题吗?
答案 0 :(得分:0)
Internet Explorer从版本8支持Element接口。 遗憾的是,版本8之前的Internet Explorer不支持接口。
在IE中使用innerText属性(不是文本),所有HTML元素都支持它,它具有与FF中textContent属性相同的功能。 在JavaScript中,当一个空字符串用作条件时,它被评估为false,因此如果this.text为空且this.textContent不为空,则(this.text || this.textContent)表达式返回undefined而不是空字符串支撑。
Element.prototype.getText = function() {
return (this.textContent === undefined ? this.innerText : this.textContent);
}
相关链接:
Interfaces in JavaScript,
innerText property,
textContent property