Šim*_*das 6 html javascript dom cross-browser
给定一个对象obj,我想检查该对象是否是本机 HTML 元素。我可以做:
if ( obj instanceof HTMLElement )
Run Code Online (Sandbox Code Playgroud)
但这不适用于跨帧(例如,在 的对象上<iframe>),因为每个帧都有自己的HTMLElement构造函数。或者,我可以这样做:
if ( obj.tagName )
Run Code Online (Sandbox Code Playgroud)
但这并不安全/可靠,因为这样的属性可能会(无意)故意添加到对象中。
那么,有没有可靠的方法来做到这一点呢?
我知道的最好方法是检查对象的 toString 表示形式。
对于 HTMLElement 的字符串表示形式,有两件事始终是正确的:
[object HTMLElement]这是检查的详细方法:
var str = Object.prototype.toString.call(obj),
isHtmlElement = str.indexOf('[object HTML') === 0
&& str.indexOf('Element]') > -1;
Run Code Online (Sandbox Code Playgroud)
仍然存在一些(但很小)误报的可能性。