检查Javascript对象是否为HTML元素的跨浏览器解决方案

3
以下代码在Firefox中可以工作,但在IE8中无法工作:
var j = "test";
alert(j instanceof HTMLElement);

我不认为IE使用HTMLElement对象。是否有一种安全的方法在IE中进行此检查?也许有一个YUI的解决方案?


@Roatin 不是的,一个元素可以存在于DOM中而不是HTML元素。 - stevebot
2个回答

9

我过去使用nodeType属性来检查所有HTML元素对象的值,其中1为标准值。

在我转换到jQuery之前,我在跨浏览器库中使用了它。

文本的nodeType值为3,而任何自定义对象可能根本没有nodeType属性。


我认为你搞反了吧?文本是类型3,而元素是类型1? - stevebot
有人需要更正这个答案,它是反过来的 :) 文本节点:3,元素节点:1,注释节点:8等等。请参见https://developer.mozilla.org/en/nodeType - npup
已修正数字,抱歉弄反了并未注意到第一条评论的通知邮件:/ - David Mårtensson

2

如果你查看jQuery源代码(不是压缩过的那个!),你会发现它们经常使用nodeType


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接