Fix Non-English Anchor Popover Positioning Issue and Update Type Hint (#1252)
- [Major] Changed `hash` passed to `querySelector` to `decodeURIComponent(hash)` to fix the issue where non-English anchors were not correctly positioning the popover content to the corresponding title. - [Minor] Updated the type hint from `HTMLLinkElement` to `HTMLAnchorElement` as the passed element is an `<a>` element, not a `<link>` element (reference: https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement).
This commit is contained in:
		@@ -3,7 +3,7 @@ import { normalizeRelativeURLs } from "../../util/path"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const p = new DOMParser()
 | 
					const p = new DOMParser()
 | 
				
			||||||
async function mouseEnterHandler(
 | 
					async function mouseEnterHandler(
 | 
				
			||||||
  this: HTMLLinkElement,
 | 
					  this: HTMLAnchorElement,
 | 
				
			||||||
  { clientX, clientY }: { clientX: number; clientY: number },
 | 
					  { clientX, clientY }: { clientX: number; clientY: number },
 | 
				
			||||||
) {
 | 
					) {
 | 
				
			||||||
  const link = this
 | 
					  const link = this
 | 
				
			||||||
@@ -33,7 +33,7 @@ async function mouseEnterHandler(
 | 
				
			|||||||
  thisUrl.hash = ""
 | 
					  thisUrl.hash = ""
 | 
				
			||||||
  thisUrl.search = ""
 | 
					  thisUrl.search = ""
 | 
				
			||||||
  const targetUrl = new URL(link.href)
 | 
					  const targetUrl = new URL(link.href)
 | 
				
			||||||
  const hash = targetUrl.hash
 | 
					  const hash = decodeURIComponent(targetUrl.hash)
 | 
				
			||||||
  targetUrl.hash = ""
 | 
					  targetUrl.hash = ""
 | 
				
			||||||
  targetUrl.search = ""
 | 
					  targetUrl.search = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -100,7 +100,7 @@ async function mouseEnterHandler(
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
document.addEventListener("nav", () => {
 | 
					document.addEventListener("nav", () => {
 | 
				
			||||||
  const links = [...document.getElementsByClassName("internal")] as HTMLLinkElement[]
 | 
					  const links = [...document.getElementsByClassName("internal")] as HTMLAnchorElement[]
 | 
				
			||||||
  for (const link of links) {
 | 
					  for (const link of links) {
 | 
				
			||||||
    link.addEventListener("mouseenter", mouseEnterHandler)
 | 
					    link.addEventListener("mouseenter", mouseEnterHandler)
 | 
				
			||||||
    window.addCleanup(() => link.removeEventListener("mouseenter", mouseEnterHandler))
 | 
					    window.addCleanup(() => link.removeEventListener("mouseenter", mouseEnterHandler))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user