0

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

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

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

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

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

4

1 回答 1

0

从版本 8 开始的 Internet Explorer 支持 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); 
} 

相关链接: JavaScript 中的接口
innerText 属性textContent 属性

于 2010-08-18T13:31:05.557 回答