blink-section-header.ts 680 B

123456789101112131415161718192021222324252627
  1. let lastBlinkedElem;
  2. export const blinkElem = (elem: HTMLElement): void => {
  3. if (lastBlinkedElem != null) {
  4. lastBlinkedElem.classList.remove('blink');
  5. }
  6. elem.classList.add('blink');
  7. lastBlinkedElem = elem;
  8. };
  9. export const blinkSectionHeaderAtBoot = (): HTMLElement | undefined => {
  10. const { hash } = window.location;
  11. if (hash.length === 0) {
  12. return;
  13. }
  14. // omit '#'
  15. const id = hash.replace('#', '');
  16. // don't use jQuery and document.querySelector
  17. // because hash may containe Base64 encoded strings
  18. const elem = document.getElementById(id);
  19. if (elem != null && elem.tagName.match(/h\d+/i)) { // match h1, h2, h3...
  20. blinkElem(elem);
  21. }
  22. };