get-element-by-reference.js 844 B

12345678910111213141516171819202122232425262728293031323334
  1. /**
  2. * Returns a reference to the element matching the attr URL fragment value
  3. * @method getElementByReference
  4. * @memberof axe.commons.dom
  5. * @instance
  6. * @param {Element} node
  7. * @param {String} attr Attribute name (href)
  8. * @return {Element}
  9. */
  10. function getElementByReference(node, attr) {
  11. let fragment = node.getAttribute(attr);
  12. if (!fragment) {
  13. return null;
  14. }
  15. if (fragment.charAt(0) === '#') {
  16. fragment = decodeURIComponent(fragment.substring(1));
  17. } else if (fragment.substr(0, 2) === '/#') {
  18. fragment = decodeURIComponent(fragment.substring(2));
  19. }
  20. let candidate = document.getElementById(fragment);
  21. if (candidate) {
  22. return candidate;
  23. }
  24. candidate = document.getElementsByName(fragment);
  25. if (candidate.length) {
  26. return candidate[0];
  27. }
  28. return null;
  29. }
  30. export default getElementByReference;