2013-05-03 93 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