IE8中“'HTMLDocument'未定义”

时间:2013-12-05 12:26:01

标签: javascript html internet-explorer internet-explorer-8

我一直在四处寻找,到处都说IE8确实有HTMLDocument和Element类。不幸的是,当我试图访问它时,我得到的只是:

"'HTMLDocument' is undefined"
"'HTMLElement' is undefined"
"'Element' is undefined"
"'Document' is undefined"

我一直怀疑它是控制台故障,但是当我从脚本和原型中加载它时会发生同样的事情,即Array确实存在。

难道我正试图以错误的方式访问它吗?我正在使用:

typeof HTMLDocument.prototype.getElementsByClassName != 'function'

3 个答案:

答案 0 :(得分:2)

我不确定,但可能是因为你处于兼容模式。

你可以做类似的事情:

var elementPrototype = typeof HTMLElement !== "undefined" 
        ? HTMLElement.prototype : Element.prototype;

但这适用于IE7 +

答案 1 :(得分:1)

好的,我找到了。 IE将自己设置为Quirks模式,用于我正在测试它的页面。不幸的是我在这种情况下无法设置文档模式,因此添加我自己的getElementsByClassName是一个失败的原因...

对于那些可以编辑他们正在处理的html文档的人,添加这个元标记以确保IE8将充当IE8:

<meta http-equiv="X-UA-Compatible" content="IE=8">

答案 2 :(得分:0)

var hasClass = function (el, searchClass) {
    return el.className.test(new RegExp('(\\s|^)' + searchClass + '(\\s|$)'));
};

在旧版本的IE中,您无法向HTMLElement.prototype添加方法。

您始终可以将此添加到Object.prototype对象,但它在

上不受欢迎

Demo