[whatwg] <a onlyreplace>

Markus Ernst derernst at gmx.ch
Thu Oct 22 02:13:30 PDT 2009


Daniel Glazman schrieb:
 > Hi there,
 >
 > That onlyreplace attribute is not enough, and trust me, I have
 > spent quite a while on solutions transforming HTML documents using
 > bits contained in external instances...
 >
 > Hixie referenced at some point in the thread my HTMLOverlays proposal
 > [1] and that proposal has a clear plus compared to the onlyreplace
 > attribute: it's not meant to ONLY replace but ALSO to add elements to
 > an existing container, using an order defined by the web author and not
 > only appending overlaid elements.
 > That's a _major_ win compared to onlyreplace.
 >
 > I am not saying here that onlyreplace is a bad idea, it's even a very
 > good one. And I find VERY amusing to read super-positive comments about
 > it that are exactly contrary to comments I received myself on
 > HTMLOverlays while the two proposals are rather similar :-)

They are crucially different in some points:
- HTMLOverlays is a ready-to-use script solution. It does not require 
any specification nor implementation by UAs. Instead, it requires work 
on the authoring side; using HTMLOverlays means totally re-writing your 
websites.
- HTMLOverlays does not degrade nicely. If a UA does not support 
scripting, or the script is not found for any reason, there is no way to 
render the page in a useable manner. This also applies to search 
engines, which will not see anything that is part of the overlay - this 
will typically apply to the whole navigation.

 > That said, there are a few problems to solve:
 >
 > - what means exactly "replacement" here? What's the scope of a
 >   <script> element?
 > - what does it mean for stylesheets and scoped stylesheets?
 > - what does it mean for the root of the replaced subtree? Let's call
 >   that the bound element and the binding : how are deferred to the
 >   subtree even handlers attached to the bound element?
 > - I don't like <a onlyreplace> because that works only with elements
 >   inside the body of a document. I want a generic mechanism that can
 >   apply to elements in head too...

Are you sure about that? I assumed this was valid:

<html>
   <head>
     <title id="title">My title</title>
     <style id="mystyle">
       @import url(mystyle.css);
       #contents h2 { color:red; }
     </style>
     <script>
       alert("This one is not replaced");
     </script>
     <script id="script2">
       function foo() { alert("bar"); }
     </script>
     <base onlyreplace="title mystyle script2 contents">
   </head>
   <body>
     <ul id="navigation">
       <li><a href="otherpage.html" onlyreplace></li>
     </ul>
     <div id="contents">
       <p>Text</p>
     <div>
   </body>
</head>

Anyway, it might be reasonable to always replace the <title> element, as 
it is recommended to have individual titles for every page, and looks 
like an overkill to give this unique element an id, just to reference it 
in the onlyreplace list.

 > - I think a mechanism using a <link> element is better because it's
 >   similar to prefetching. It's also semantically better because it
 >   used a _very_ old proposal of mine called "link dereferencing" [1].
 >   And of course it is better because it can help resolving the
 >   progressive rendering issues of <a onlyreplace> since the head
 >   is parsed before the body...

Can you give a code example how this could look like?


More information about the whatwg mailing list