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