2013-05-03 92 views
2

我有几个页面主要在iframe中加载。但有时它们会在其外部加载JavaScript错误顶部未定义

但是,在外部打开时,top未定义。我知道我可以检查top是否被定义,如果没有定义,可以使用self。有没有更好的办法?

+2

'top =先顶||自; top.location.href = ...' – CBroe 2013-05-03 08:03:28

+0

所有的浏览器都支持'window.top',但可能不是'top',所以要么使用上面的评论,要么使用window.top – 2013-05-03 08:21:10

+0

我知道这不太可能,但是'top'被其他地方覆盖一个'var top;'? – 2013-05-03 08:43:52

回答

1

似乎window.top总是定义(至少在FF和铬),如果在页面加载的顶部文件是指window本身,所以这不成问题。
OTOH,window.top不是任何标准的一部分,所以浏览器可能会以不同的方式实现它(是的,我正在看你,IE)。更多信息:MDN - window.top

如果您有测试,你可以把它紧凑:

(window.top || window.self).location.href = ...; 
+0

但顶部=== window.top怎么会是未定义??默认情况下window.top指window.self如果没有其他窗口假设 – 2013-05-03 08:03:33

+0

是的,这就是我认为... ... – 2013-05-03 08:06:56

1

做了尝试,如:

if (typeof variable === 'undefined') { 
// variable is undefined 
} 
+0

我不想那样做 – aWebDeveloper 2013-05-03 08:19:14