[whatwg] Suggestion: "context" attribute

Matthew Raymond mattraymond at earthlink.net
Sat Jun 26 04:59:41 PDT 2004

Martin Kutschker wrote:
> ------------------------------------------------------------
> <div id="myPopup" popup="popup">
> <p>Random popup stuff</p>
> </div>
> <input type="text" value="some text" context="myPopup">
> ------------------------------------------------------------

    I see, you object to the abuse of the "repeat" attribute. The 
problem here is we now have two attributes that effectively define the 
same concept: "repeat" and "popup". I'm not sure if you've read the 
other thread I posted, but I prefer the following solution:


<template id="myPopup"><!--
    <p>Random popup stuff</p>

<input type="text" value="some text" context="myPopup">


    This fixes the following problems:

1) It doesn't require multiple attribute definitions that use the same 
concept: templates.

2) Since the contents of template are commented, legacy UAs won't render 
it. The template element itself will be ignored by legacy UAs. So, 
basically, this approach makes templates nonvisible of all UAs, unless 
someone goes out of their way in to make the element visible. (Note that 
the repeat="template" method requires both support for CSS and the use 
of styling by the author to hide the template. Also, the styling in 
question, which is listed in the WF2 spec, doesn't seem to work in IE 6.0.)

3) It's significantly easier for a web author to figure out that the 
<div> block above is actually a template.

4) Since DOM supports access to comments, UAs with DOM and scripting 
support can use a script to read the contents of <template> and generate 
a popup accordingly.

> I've had no problems with "context". But I'm stricly against rehashing
 > elements or attributes. Especially if it's semantically an abuse.

    Well, with the solution above, the "repeat" attribute is only used 
for non-templates, so you get something like this:


<template id="myItem"><!--
   <div id="myDiv[myItem]">...Stuff...</div>

<div id="myDiv1" repeat="1">...Custom Stuff...</div>
<div id="myDiv3" repeat="3">...More Custom Stuff...</div>


    As you see, the repeat attribute, when used in conjunction with a 
<template> element, only has numerical values. I would argue that this 
makes the attribute even more pure than it was before.

> Because it was not meant for this and 'repeat="tenplate"' makes
 > abosultely no sense for a popup. The naming is confusing.

    Using <template> fixes that.

> Well, Mozilla can handle unnown tags :-) But you're right introducing
 > elements shouldn't be done light heartedly.

    The nice thing about the <template> solution is that for the price 
of a single additional element, you eliminate part of an attribute and 
gain additional flexibility.

> I didn't object to "context". Though I doubt if reusung a XUL attribute
 > has any benefits. So this is the same to me:
> ------------------------------------------------------------
> <input type="text" value="some text" popupid="myPopup">
> ------------------------------------------------------------

    I have a slight preference for "context", but it's really important 
so long as the web author knows what the attribute does.

More information about the whatwg mailing list