- 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