- From: L. David Baron <dbaron@dbaron.org>
- Date: Wed, 21 Aug 2013 14:46:04 -0700
- To: Simon Pieters <simonp@opera.com>
- Cc: "www-style@w3.org" <www-style@w3.org>, Peter Sloetjes <pjs.nl@live.com>
- Message-ID: <20130821214604.GA29161@crum.dbaron.org>
On Thursday 2013-08-15 22:30 +0200, Simon Pieters wrote:
> On Mon, 12 Aug 2013 21:57:21 +0200, Peter Sloetjes <pjs.nl@live.com> wrote:
>
> >>> For the purpose of faster and simpler low level style
> >>transformations, I
> >>> would like to see either:
> >>> 1) the CSSStyleDeclaration interface to be extended with the functions
> >>> 'setPropertyValue' and 'setPropertyPriority', or
> >>> 2)
> >>> the CSSStyleDeclaration.setProperty function to accept 'null' for the
> >>> property value or property priority as an indication that the
> >>> value/priority should not be changed.
> >>
> >>For (2), currently null for the value means that the declaration
> >>is to be
> >>removed and null for priority means that !important gets unset.
>
> >As you note, the second solution I proposed is not feasible, hence
> >the preferred solution would be to add 'setPropertyValue' and
> >'setPropertyPriority' functions to the CSSStyleDeclaration
> >interface, for symmetry & speed.
>
> Another option is to let setProperty(value) i.e. with the second
> argument omitted leave the priority alone. This would be a change in
> behavior, but the current behavior seems unexpected and is likely to
> result in buggy code. Does anyone know if there are pages that would
> break if setProperty(value) (or with the property = value; syntax)
> would *not* unset !important ?
I think this is a really bad idea (which has apparently now made its
way into the spec according to comments in
https://bugzilla.mozilla.org/show_bug.cgi?id=903239 , although I
don't see any mention in this thread of it).
The underlying mental model of setProperty has, I think, always been
"append declaration". The object model of declaration blocks was
designed without an idea of preserving order; setProperty appends a
declaration to the end. Thus setProperty with no priority being a
no-op if the declaration block already has an !important declaration
for that property.
I also think the use case is really obscure, and having to make an
extra function call to address it (as today) is fine. I don't see
strong evidence that we need to change the Web platform to address
it.
Please revert this spec change.
-David
--
𝄞 L. David Baron http://dbaron.org/ 𝄂
𝄢 Mozilla https://www.mozilla.org/ 𝄂
Before I built a wall I'd ask to know
What I was walling in or walling out,
And to whom I was like to give offense.
- Robert Frost, Mending Wall (1914)
Received on Wednesday, 21 August 2013 21:46:36 UTC