- From: Boris Zbarsky <bzbarsky@mit.edu>
- Date: Wed, 4 May 2016 17:53:35 -0400
- To: Zack Weinberg <zackw@panix.com>
- Cc: fantasai <fantasai.lists@inkedblade.net>, "Tab Atkins Jr." <jackalmage@gmail.com>, www-style list <www-style@w3.org>, Anne van Kesteren <annevk@annevk.nl>, Jonas Sicking <jonas@sicking.cc>
On 5/4/16 5:45 PM, Zack Weinberg wrote:
> In that case, though, I don't understand what _breaks_.  For this to
> be a reasonable thing for a page to do, the fragment reference needs
> to be valid in all three of: the originally loaded page, the page
> after JS has messed with it, and the page that would be loaded if you
> pasted the new URL into the address bar.
Sure.  So say all the pages involved (old page, old page after 
pushstate, new url) have this somewhere in the DOM:
   <svg>
     <pattern id="foo">stuff</pattern>
   </svg>
   <svg>
     <rect style="fill: url(#foo)"/>
   </svg>
If the url is converted to an absolute one, it becomes 
"http://foo.org/a#foo" while the page URL is "http://foo.org/b#foo".  So 
it's no longer a same-document reference, and the browser is supposed 
to... well, browsers differ, but at least Gecko will load 
"http://foo.org/a" and if it's an SVG document per the MIME type parse 
it and look for the thing with id="foo" in there.  But since the type is 
going to be "text/html" in this case that sure doesn't work.
> So why does it _matter_
> whether the browser interprets the fragment reference relative to the
> old URL or the new one?  I guess this is what you meant about "whether
> or not it's a same-document reference"?
Right.  In the "same-document reference" case instead of loading a 
separate document and trying to parse it, UAs just getElementById in the 
current document.
> Maybe "this is a same-document reference" _should_ be baked into the URL when it's
> absolutized?
That is one possible approach to this, yes...
-Boris
Received on Wednesday, 4 May 2016 22:13:43 UTC