Fix failure to display URLs ending in question mark #655
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #654.
I discovered that Kiwix JS does not exhibit the problem described, and it turns out to be that using
encodeURI()
, unlikeencodeURIComponent()
does not encode question marks. The problem here is the need to encode a question mark when it is part of the dirEntry's url or title, as will always be the case in Wikipedia ZIMs. But in fact, because even Zimit does not have a concept of a querystring, even if a querystring is present in the URL, that we always need to encode the full dirEntry.url before placing it in the iframe's location.href field (or redirecting to it in separate tabs). So, we have to useencodeURIComponent()
but taking care not to encode forward slashes! This is how Kiwix JS does it, by encoding the parts between forward slashes.Hopefully this will work in all circumstances and ZIM types, but it does need careful testing.