我在FF 3.6和IE 8中测试了以下代码。前者警告true
,后者警告false
。为什么这样,我如何在两个浏览器中完成相同的行为?谢谢!
<!DOCTYPE html>
<html>
<head>
<script>
alert(window.location instanceof Location);
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:1)
编辑:关于您问题的评论,听起来您需要测试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]]
属性名称的方法。
答案 1 :(得分:0)
location.constructor == Location
适用于IE和Firefox;在Chrome中不起作用。 (Chrome中没有Location
个对象。)但是,只有在运行脚本时从同一窗口测试位置时才会起作用。
你真的想做什么?