document.defaultView
是什麼意思?document.defaultView有什麼意義?
在瀏覽器返回與文檔或空,如果沒有提供相關的窗口對象。
類似於下面的代碼(從PPK's site)利用了document.defaultView
:
function getStyle(el,styleProp)
{
var x = document.getElementById(el);
if (x.currentStyle)
var y = x.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
return y;
}
這樣的代碼可以在其他地方找到像大衛?馬克的我的圖書館。我不確定人們是否只是從PPK或其他來源複製或獨立提出這個問題,但我不明白。
我的問題是,在這種情況下使用document.defaultView
有什麼意義?那豈不是更容易編寫此如下:
function getStyle(element, styleProp) {
if (element === ''+element) element = document.getElementById(element);
return element.currentStyle ? element.currentStyle[styleProp] :
getComputedStyle(x,null).getPropertyValue(styleProp);
}
是什麼document.defaultView.getComputedStyle
做window.getComputedStyle
或者乾脆getComputedStyle
不?
cwolves的回答讓我想到了正確的方向。原來的功能很傻,缺少defaultView
的點。我上面的提議不那麼愚蠢,但也缺少defaultView
這一點。這是我的新建議:
function getStyle(element, styleProp) {
var view = element.ownerDocument && element.ownerDocument.defaultView ?
element.ownerDocument.defaultView : window;
return view.getComputedStyle ?
view.getComputedStyle(element,null).getPropertyValue(styleProp) :
element.currentStyle ?
element.currentStyle[styleProp] : null;
}
元素本身必須傳入,而不是id。無論如何,我認爲這可能是首選。這會獲取包含節點的文檔以及與其關聯的窗口。如果ownerDocument
或defaultView
已損壞(我依稀記得getComputedStyle
大約在defaultView
之前),它回退到當前窗口的getComputedStyle
。這可能更接近defaultView
的預期用途。
訪問該元素的父
window
所以會措辭的另一種方式,是,只有在你還沒有處理與文檔關聯的窗口/全局時纔有用? – 2012-02-07 20:50:58不一定 - 正如我所說的,你可以有幾個不同的文檔(iframe),所以它是一個指向特定窗口的鏈接(例如'iframe.contentWindow' vs'window' vs'iframe2.contentWindow')。文檔也可以移動,所以即使您存儲了原始鏈接,它也可以更改。我相信,這是一種安全的方式來從'document'引用'當前窗口'。 – 2012-02-07 20:52:43
你是對的。用一個新的提案來更新問題,以瞭解函數的外觀。 – 2012-02-07 20:57:35