typeof(opener)
在所有瀏覽器中產生「對象」,但IE,儘管該對象爲空。 IE僅在實際使用window.open或類似方法時纔會執行此操作。我討厭這樣想,但是IE是唯一的瀏覽器嗎?爲什麼有些瀏覽器在沒有一個瀏覽器時聲明瞭一個opener對象?
typeof(opener)
在所有瀏覽器中產生「對象」,但IE,儘管該對象爲空。 IE僅在實際使用window.open或類似方法時纔會執行此操作。我討厭這樣想,但是IE是唯一的瀏覽器嗎?爲什麼有些瀏覽器在沒有一個瀏覽器時聲明瞭一個opener對象?
「爲什麼有些瀏覽器在沒有一個的時候聲明一個opener對象?
在JavaScript中,typeof null === "object"
相反的typeof
,使用直接===
比較。
opener === null; // true
如果IE是給你undefined
,然後使用==
來測試這兩種。
opener == null; // true if null or undefined
window.opener
爲空。null
是導致與typeof
對象的原始類型之一。控制檯輸出鉻:
> window.opener
null
> typeof null
"object"
> typeof window.opener
"object"
控制檯輸出IE9:
>> window.opener
>> typeof window.opener
"undefined"
所以看起來像鉻/火狐初始化爲null,IE不定義它開始了。但是,當你進行真實性檢查時,這並不重要,因爲null和undefined會評估爲false。
'typeof null'是'「object」',但'null'實際上並不是一個對象。 – 2013-03-04 21:35:04
Internet Explorer與其他瀏覽器有很多不同之處。這只是一個小例子。
良好的跨平臺JavaScript需要有許多If-then-else分支的實例(或作爲替代try-catch)來處理這些差異。
一個簡單的測試方法是查看Navigator.appName – 2013-03-04 21:48:08
你爲什麼看着這種類型?爲什麼不看價值?如果(開叫者)'。類型的關注點是什麼? – jfriend00 2013-03-04 21:33:58
我只是想知道爲什麼該對象已被宣佈在第一名。 – Serhiy 2013-03-04 21:35:22
IE在「普通」窗口(不是從js打開的窗口)上爲window.hasOwnProperty('opener')提供了什麼? 'undefined'? – bfavaretto 2013-03-04 21:35:24