[whatwg] URL resolution of fragment urls in html5 webapps
iminar at google.com
Thu Jul 18 01:16:11 PDT 2013
Holly cow! IE8 and 9 (but not 10) actually resolve the in-document urls
just as I want even with base[href] set.
Could that be used as an argument for clarifying the spec on url resolution
and making the in-document navigation with base set possible?
btw Alex, I looked at the Navigation Controller and it would definitely
help if the in-document navigation was something that I could control with
it. But ideally, I shouldn't need to do anything for the in-document
navigation to work.
On Wed, Jul 10, 2013 at 11:14 AM, Igor Minar <iminar at google.com> wrote:
> On Wed, Jul 10, 2013 at 10:24 AM, Alex Russell <slightlyoff at google.com>wrote:
>> hey Igor,
>> Was just discussing this with Rafael, and it seems like the core issue
>> you're flagging is that if a document has a <base> element, all #anchor
>> navigations (which would otherwise be document relative) are now full-page
>> navigations to the URL specified in the <base>, not the document's
>> "natural" URL. Is that right?
>> If so, we might be able give you some control over this in the Navigation
>> Controller (although it's not currently scoped as many folks didn't want to
>> contemplate in-document navigation for the time being).
>> But perhaps we don't need to do that: is the current behavior the same
>> across browsers? If it's not, we might be able to change the spec. If it
>> is, it'll be harder.
> As far as I can tell it is, because that the easiest thing to implement.
> It sort of makes sense why - a relative anchor url is treated just as any
> relative url and it is resolved as such. However, just as Rafael pointed
> out, unlike path-relative urls, I can't think of a scenario where resolving
> relative anchor urls against anything but "self" would be useful and
> therefore I have a hard time thinking of an existing code that would take
> advantage and rely on this kind of resolution.
> In the ideal world, I'd love for the spec to say that
> - all relative urls except for relative anchor urls should be resolved
> against document.baseURI (which is tied to location.href unless base[href]
> is set)
> - relative anchor urls should always resolve against location.href
> I think that this kind of behavior would make the url resolution work in
> all common and currently used scenarios.
>> On Wed, Jul 10, 2013 at 7:11 AM, Igor Minar <iminar at google.com> wrote:
>>> The current url resolution as
>>> the spec results in some unhelpful behavior when the following
>>> combination of web technologies are used in a client-side web app:
>>> - a combination of path-relative urls (<a
>>> href="relative/url/to/somewhere">link</a>) and fragment/anchor urls (<a
>>> - history.pushState - used for deep-linking
>>> - base[href] - used to properly resolve the relative urls to the root of
>>> the application in various deployment environments
>>> Once history.pushState is used to change location.href, the path-relative
>>> urls resolve correctly as expected against the base[href], but anchor
>>> that are only useful if resolved against the current document.baseURI
>>> unsurprisingly resolve against the base[href]. This behavior makes them
>>> unsuitable for this kind of applications which is a big loss in
>>> toolbox and in fact breaks existing web features like svg that depend on
>>> anchor urls to reference nodes in the current document.
>>> Does anyone have thoughts on how one could build a client-side app that
>>> be deployed in various contexts without any special server-side
>>> or build-time pre-processing?
>>> The base element looks like a perfect solution for this, if only it
>>> break anchor urls.
More information about the whatwg