javascript - 为什么 "window.location instanceof Location"在 IE 中显示为 false?

标签 javascript dom typechecking

我在 FF 3.6 和 IE 8 中测试了以下代码。前者警报 true,后者警报 false。这是为什么?如何在两个浏览器中实现相同的行为?谢谢!

<!DOCTYPE html>
<html>
    <head>
        <script>
            alert(window.location instanceof Location);
        </script>
    </head>
    <body>
    </body>
</html>

最佳答案

编辑:关于您问题下的评论,听起来您需要测试 DOM 元素和 Location 对象之间的差异。

使用 nodeType 属性测试 DOM 元素可能会更好。

if( obj.nodeType ) {
    // it was a DOM element
}

然后,如果未找到 nodeType,您可以测试各种属性,只是为了确定它是 location 对象。

if( obj.nodeType ) {
    // it was a DOM element
} else if( obj.hostname && obj.pathname ) {
    // it was a location object
} else {
    // some ERROR
}
<小时/>

原始答案:

这对我在 Chrome、Safari、Firefox 中有效:

Object.prototype.toString.call(window.location) == '[object Location]';

不过,我现在无法在 IE 中进行测试。

这是 ECMAScript 规范 Section 8.6.2 中注明的方法用于获取内部[[Class]]属性名称。

关于javascript - 为什么 "window.location instanceof Location"在 IE 中显示为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630313/

相关文章:

javascript - 是否可以在 Jquery 自动完成中执行此操作?

javascript - 输入类型 - 后退按钮?

javascript - 在 Intranet 中启用跨域脚本

javascript - 剑道 UI 网格 : Drag and Drop Hierarchy not working

arrays - 如何检查对象是否是 TypeScript 中的只读数组?

javascript - 我如何扩展一个 javascript 对象,以便在 native 没有 outerHTML 的浏览器中,我可以定义它?

javascript - 在运行时将脚本内容添加到页面

javascript - dom 加载后,如何使 jquery 元素对生成的元素起作用?

javascript - 功能的冗余类型检查?

c++ - std::enable_if 类型检查