Skip to content
This repository

Base tag broken: Images/Links have invalid paths in sub-directory documents. #1508

Closed
jblas opened this Issue April 22, 2011 · 4 comments

3 participants

Kin Blas John Bender Scott Jehl
Kin Blas
jblas commented April 22, 2011

If you use FireFox 4 or any other browser (Chrome) that shows you the href of a link when you hover over it, and you navigate to:

http://jquerymobile.com/test/

then click on "Pages & dialogs", after the new page transitions in, hover over the listview items on the page and see what the browser displays. I'm seeing URLs like this:

http://jquerymobile.com/test//test/docs/pages/docs-pages.html

Notice the "/test//test" in the middle? it should be displaying:

http://jquerymobile.com/test/docs/pages/docs-pages.html

This seems to be due to the fact that we switched to passing in site relative URLs into base.set(). When the base code was originally written, I think it assumed that the path passed in would always be document relative which is why it prepends the HREF passed in with docbase..

Scott Jehl

This url demonstrates that the base tag is no longer correct:
http://jquerymobile.com/test/#/test/docs/about/intro.html

John Bender

I took a look at this after Kin mentioned it on Friday, and the naive fix is to check for an absolute path in the hash and just use location.protocol + "//" + location.host for docBase. In the case where there's a relative path (backward compat) we need to do a bit more work.

Mind you this came from a cursory first look.

John Bender

I've started work on handling this, and I think Kin is working on documenting the various cases to handle with the base tag but I thought I would get my own notes down here so we can compare. To start, handling the dynamic base tag:

base tags need to be set in 3 cases

  1. initial load - where there is no value available from an anchor or form action to tell us what the base href value should be
  2. loading a page from a page relative url - the relative path must be stripped of trailing file information and applied to the current host and pathname
  3. loading a page from a host relative url - the path must be stripped of trailing file information and applied to the current host.
Kin Blas
jblas commented April 25, 2011

I started documenting the use cases we need to handle here:

https://github.com/jquery/jquery-mobile/wiki/Refactor:-navigation-paths

Scott Jehl scottjehl closed this issue from a commit May 06, 2011
This change sets the base tag properly on page load and page changes,…
… corresponding with the recent change to absolute path hash urls. Images and other assets will direct relative to the document in which they reside. This may not cover new path situations Kin has documented, but it does fix the regression so things work as they did before the change. Tested in non-base supporting browsers to verify it works there too. The following page should have an image in the content, verifying the fix http://jquerymobile.com/test/#/test/docs/about/intro.html . Fixes #1508
4b4ee54
Scott Jehl scottjehl closed this in 4b4ee54 May 06, 2011
Timmy Willison timmywil referenced this issue from a commit May 06, 2011
This change sets the base tag properly on page load and page changes,…
… corresponding with the recent change to absolute path hash urls. Images and other assets will direct relative to the document in which they reside. This may not cover new path situations Kin has documented, but it does fix the regression so things work as they did before the change. Tested in non-base supporting browsers to verify it works there too. The following page should have an image in the content, verifying the fix http://jquerymobile.com/test/#/test/docs/about/intro.html . Fixes #1508
0ba458e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.