- From: Boris Zbarsky <bzbarsky@mit.edu>
- Date: Thu, 11 Dec 2014 22:43:33 -0500
- To: 段垚 <duanyao@ustc.edu>, www-style@w3.org
On 12/10/14, 1:49 AM, 段垚 wrote:
> My test results of getComputedStyle() on a foreign element in 3 desktop
> browsers is as follows:
I think we need to add a few things to the test matrix. Specifically,
these may be of interest:
1) Node is display:none and in an iframe.
2) Node has a display:none parent and is in an iframe.
3) Node is in an iframe and the <iframe> element is display:none.
4) Node's ownerDocument is in an iframe but the node is not "in the
document" (in that its parentNode chain does not terminate at the
document node).
I think calling the createHTMLDocument() case "invisible doc" is a bit
misleading, because it actually has a much stronger constraint on it:
it's a document which is not in a browsing context at all. There are
various cases of "invisible" documents which are in browsing contexts,
and in fact may well have CSS layout happening in them.
> * Browsers are consistent for visible subdoc (i.e. in a frame). That is,
> parent doc's CSS rules are never considered, and
> getComputedStyle(el_in_frame)
> is equivalent to
> el_in_frame.ownerDocument.defaultView.getComputedStyle(el_in_frame).
> However this behavior conflicts with current CSSOM spec.
Yep.
> * Browsers are inconsistent for invisible subdoc. Firefox's behavior
> seems similar to the one defined spec, but layout is not performed to
> compute used values,
There can't be any layout because there is no browsing context, fwiw.
Also, per HTML spec style sheets in such a document must not be loaded
(an <style> elements must not be parsed). So what IE is doing here just
doesn't match the HTML spec at all.
> and inline rules are dropped.
Yeah, the data structure we use for CSS-anything in Gecko just doesn't
exist in document's without a browsing context.
> Chrome doesn't support getComputedStyle() on invisible subdoc at all.
Here's a question. If you make that getComputedStyle call, then adopt
the element into a document that _is_ in a browsing context, what
happens? Does it matter whether you insert the element so it's "in the
document" in the document it was adopted into?
-Boris
Received on Friday, 12 December 2014 03:44:07 UTC