For URI schemes like qrc: (Qt resource; http://qt-project.org/doc/qt-5.0/qtcore/resources.html) which do not include an
authority but only a path the method $.mobile.path.getLocation()
incorrectly returns a URL with a double-slash (//) after the scheme name.
In a Qt Webkit ThinClient application ("Web application wrapper"; http://qt-project.org/doc/qt-4.8/qtwebkit-bridge.html) this resulted in continuously
adding up slashes in front of the path (e.g. "qrc://////index.html") when jQuery Mobile handles navigation. This in turn resulted in a complete page reload for pure anchor links instead of just handling the hash change.
(The issue occured in combination with a application using BackboneJS as a router.)
As this issue can only be fully reproduced in a ThinClient (demo code: http://qt-project.org/doc/qt-4.8/webkit-imageanalyzer.html), no full jsbin testcase is attached.
So what is the issue: The method $.mobile.path.getLocation() incorrectly assumes that the URI's hierarchical part (http://en.wikipedia.org/wiki/URI_scheme) always starts with a double-slash (//). A URI "mailto:email@example.com" (which is authority-less, too) might not make much sense when supplied to $.mobile.path.getLocation(). However, for qrc: URIs it's the way resources are addressed in Qt. jQuery mobile alters a qrc:/index.html URI to qrc:///index.html, which does not seem correct to me.
Original pull request is #6597 and commit is e5290d2 (5 tests failed)
Affected versions: at least 1.3.1 until master
Simple testcase: http://jsbin.com/ofuhaw/606/
Navigation: Do not assume "//" is always part of an absolute URL
Note: this does indeed represent a fix for gh-6574, but only once a version of
Cordova sporting apache/cordova-wp8#30 is released.
(cherry picked from commit 9e082b0)
@gabrielschulhof Awesome, thank you for fixing this issue!