is-visual-content.js 934 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const visualRoles = [
  2. 'checkbox',
  3. 'img',
  4. 'radio',
  5. 'range',
  6. 'slider',
  7. 'spinbutton',
  8. 'textbox'
  9. ];
  10. /**
  11. * Check if an element is an inherently visual element
  12. * @method isVisualContent
  13. * @memberof axe.commons.dom
  14. * @instance
  15. * @param {Element} element The element to check
  16. * @return {Boolean}
  17. */
  18. function isVisualContent(element) {
  19. /*eslint indent: 0*/
  20. const role = element.getAttribute('role');
  21. if (role) {
  22. return visualRoles.indexOf(role) !== -1;
  23. }
  24. switch (element.nodeName.toUpperCase()) {
  25. case 'IMG':
  26. case 'IFRAME':
  27. case 'OBJECT':
  28. case 'VIDEO':
  29. case 'AUDIO':
  30. case 'CANVAS':
  31. case 'SVG':
  32. case 'MATH':
  33. case 'BUTTON':
  34. case 'SELECT':
  35. case 'TEXTAREA':
  36. case 'KEYGEN':
  37. case 'PROGRESS':
  38. case 'METER':
  39. return true;
  40. case 'INPUT':
  41. return element.type !== 'hidden';
  42. default:
  43. return false;
  44. }
  45. }
  46. export default isVisualContent;