E-book viewer: Fix links with an href of # not working. Fixes #1915303 [Private bug](https://bugs.launchpad.net/calibre/+bug/1915303)

This commit is contained in:
Kovid Goyal 2021-02-11 08:51:21 +05:30
parent dcf658b365
commit 7d5bb8524d
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -100,9 +100,9 @@ def create_link_replacer(container, link_uid, changed):
def link_replacer(base, url):
if url.startswith('#'):
frag = urlunquote(url[1:])
if not frag:
return url
changed.add(base)
if not frag:
return link_uid
return resource_template.format(encode_url(base, frag))
try:
purl = urlparse(url)
@ -440,7 +440,9 @@ def transform_html(container, name, virtualize_resources, link_uid, link_to_map,
href = link_replacer(name, href)
if href and href.startswith(link_uid):
a.set(attr, 'javascript:void(0)')
parts = decode_url(href.split('|')[1])
parts = href.split('|')
if len(parts) > 1:
parts = decode_url(parts[1])
lname, lfrag = parts[0], parts[1]
link_to_map.setdefault(lname, {}).setdefault(lfrag or '', set()).add(name)
a.set('data-' + link_uid, json.dumps({'name':lname, 'frag':lfrag}, ensure_ascii=False))