34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
<script>
 | 
						|
/* Creates an anchor element with the given ID and link for the permalink*/
 | 
						|
const anchorForId = (id) => {
 | 
						|
  const anchor = document.createElement("a");
 | 
						|
  anchor.className = "header-link";
 | 
						|
  anchor.href = `#${id}`;
 | 
						|
  anchor.innerHTML = `<span class="sr-only">Permalink</span><i class="fa fa-link" aria-hidden="true"></i>`;
 | 
						|
  anchor.title = "Permalink";
 | 
						|
  return anchor;
 | 
						|
};
 | 
						|
 | 
						|
/* Finds all headers of the specified level within the given element, and adds a permalink to each header*/
 | 
						|
const linkifyAnchors = (level, containingElement) => {
 | 
						|
  const headers = Array.from(containingElement.getElementsByTagName(`h${level}`));
 | 
						|
  headers.forEach((header) => {
 | 
						|
    if (header.id) {
 | 
						|
      header.appendChild(anchorForId(header.id));
 | 
						|
    }
 | 
						|
  });
 | 
						|
};
 | 
						|
 | 
						|
/* Executes the function when the document is ready */
 | 
						|
document.onreadystatechange = () => {
 | 
						|
  if (document.readyState === "complete") {
 | 
						|
    const contentBlock = document.getElementsByClassName("docs")[0]
 | 
						|
      ?? document.getElementsByClassName("news")[0];
 | 
						|
    if (!contentBlock) { return; }
 | 
						|
    for (let level = 1; level <= 6; level++) {
 | 
						|
      linkifyAnchors(level, contentBlock);
 | 
						|
    }
 | 
						|
  }
 | 
						|
};
 | 
						|
</script>
 |