Re: Proposal: getStyleAs(property, primitiveValue)

On Wed, Sep 23, 2009 at 10:38 AM, Øyvind Stenhaug <oyvinds@opera.com> wrote:
> On Tue, 22 Sep 2009 18:27:42 +0200, Garrett Smith <dhtmlkitchen@gmail.com>
> wrote:
>
>> * document.defaultView.getComputedStyle
>>  * Too verbose. The defaultView is unrelated to the Element (the DOM
>> spec says: "a computed style is related to an Element node").
>
> Isn't this somewhat circular, since document is found in AbstractView?

How does a program obtain a reference to an "abstract view" besides
document.defaultView?

Or
> are there any browsers that need document.defaultView.getComputedStyle
> instead of just getComputedStyle?
>

There just might be. Actually, I happen to know a couple.

The DOM 2 spec does not say that there is a global function
"getComputedStyle". Why rely on it?

A few earlier browsers implemented document.defaultView as |window|.

Some authors then made the generalization that document.defaultView
/was/ window. They did this without any specification, probably
copying online tutorials and things that can be found from pop sites
like "ajaxian". It caught on like wildfire and document.defaultView
was being replaced by "window" in a lot of code. Now that in itself is
an interesting phenomenon. What reasonable explanation can be given
for the explosive popularity of favoring the nonstandard call to
getComputedStyle in global context? Probably
document.defaultView.getComputedStyle is too verbose and clunky and
getComputedStyle is shorter and simpler.

As a result of "what pages do", recent browser vendors have adapted to
make document.defaultView the window and we can see the change in
Safari 3, where document.defaultView is window, but was not in safari
2.

It is unreasonable to make assertions of what "all browsers" do. It is
just as unreasonable to expect any one person to know what "all
browsers do." Though sometimes fair to make assertions that non
standard things exist, such as a global |window| property. A
scriptable browser not providing a window property would surely be
breaking a lot of sites that expect that, and so program can expect
that there be a window property.

I don't know which versions of Konqueror do what. I have not found an
emulator for recent versions of NetFront, so I cannot verify that,
either. There is also Danger (which Microsoft seems to have abducted),
Teleca, for which I cannot find an emulator, and I don't know how many
more.

document.defaultView.getComputedStyle is standard and works.
window.getComputedStyle is nonstand. It "works" in a few browsers, but
is a poorer choice when compatibility is a concern.

>> A corresponding method to set a value would not seem to be necessary,
>> as any value could be set with:
>>
>> x.style.color = "papayawhip";
>
> Well, not if there's an !important color declaration somewhere that affects
> x.

OK. What are you getting at?

Received on Wednesday, 23 September 2009 21:03:36 UTC