[whatwg] Document's base URI should use the document's *current* address
Ian Hickson
ian at hixie.ch
Tue Jul 19 14:35:53 PDT 2011
On Wed, 27 Apr 2011, Justin Lebar wrote:
>
> The document base URL is used when fetching resources.
>
> Right now, if a page doesn't have a <base> element, the document base
> URL is set to the document's address. (I'm going to call this the
> "document's original address".) The document's original address does
> not change when you call pushState; only the document's current address
> does.
>
> I think the base URI should use the document's current address, not the
> original address.
>
> To see why this makes sense, consider the following scenario:
>
> * User loads page.html
> * Page calls pushState and changes its url to page2.html
> * User clicks on a link with href "#foo".
>
> As currently specified, we'll resolve #foo relative to the document's
> original URL; that is, clicking the link will take the user to
> page.html#foo, not page2.html#foo. But the intent of a link with href
> #foo is clearly to navigate within the current page, not to go somewhere
> else.
>
> Firefox 4 already implements pushState as I'm suggesting here.
The spec as written decides whether a link is a same-resource reference or
not based on comparing the URLs to what you're calling the original
address, not comparing it to the current address. See the navigation
algorithm, step 7 /Fragment identifiers/.
Note that there are problems with what you describe: what if the new URL
has a different path, and there are <img> elements whose URLs are
relative, and after pushState() you clone one? Or what about relative
links in the original markup? I don't think we can change the base URL on
the fly, all kinds of problems could result.
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
More information about the whatwg
mailing list