如何使用'prototype'扩展IXMLDOMElement?

时间:2010-08-18 13:03:22

标签: javascript internet-explorer ixmldomelement

我有一些代码,这些代码是几年前编写的,仅适用于IE。我想,现在让它与浏览器一起使用。

因此,代码通过XHR接收XML,然后读取其内容。我有一个元素的“集合”。在FF中,类型为元素,在IE中 IXMLDOMElement 。要使阅读文本值统一(FF使用 textContent 属性,IE 文本),我想添加如下方法:

Element.prototype.getText = function() {
    return this.text || this.textContent;
}

但是,当我尝试在IE中使用 IXMLDOMElement 而不是元素执行此操作时,我得到错误(在IE中),未定义IXMLDOMElement。如果是那种类型的东西怎么定义? (在IE的开发工具中查看)

任何人都可以给我任何建议,暗示如何处理这个问题吗?

1 个答案:

答案 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 propertytextContent property