aria-api

access ARIA information from JavaScript
git clone https://git.ce9e.org/aria-api.git

commit
f88b0e6ec750fa9f24164938b2c7797341c60b06
parent
65341b286affb2f7c599a428c4a9a5f228cd0780
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2023-08-19 07:31
fix embedded input test

Diffstat

M lib/name.js 43 ++++++++++++++++++++-----------------------

1 files changed, 20 insertions, 23 deletions


diff --git a/lib/name.js b/lib/name.js

@@ -49,11 +49,6 @@ var allowNameFromContent = function(el) {
   49    49 	return (constants.roles[role] || {}).nameFromContents;
   50    50 };
   51    51 
   52    -1 var isInLabelForOtherWidget = function(el) {
   53    -1 	var label = el.parentElement.closest('label');
   54    -1 	return label && (!el.labels || !Array.prototype.includes.call(el.labels, label));
   55    -1 };
   56    -1 
   57    52 var getName = function(el, recursive, visited, directReference) {
   58    53 	var ret = '';
   59    54 
@@ -79,6 +74,22 @@ var getName = function(el, recursive, visited, directReference) {
   79    74 		ret = strings.join(' ');
   80    75 	}
   81    76 
   -1    77 	// E (the current draft has this at this high priority)
   -1    78 	if (!ret.trim() && recursive) {
   -1    79 		if (query.matches(el, 'textbox,button')) {
   -1    80 			ret = el.value || el.textContent;
   -1    81 		} else if (query.matches(el, 'combobox,listbox')) {
   -1    82 			var selected = query.querySelector(el, ':selected') || query.querySelector(el, 'option');
   -1    83 			if (selected) {
   -1    84 				ret = getName(selected, recursive, visited);
   -1    85 			} else {
   -1    86 				ret = el.value || '';
   -1    87 			}
   -1    88 		} else if (query.matches(el, 'range')) {
   -1    89 			ret = '' + (query.getAttribute(el, 'valuetext') || query.getAttribute(el, 'valuenow') || el.value);
   -1    90 		}
   -1    91 	}
   -1    92 
   82    93 	// C
   83    94 	if (!ret.trim() && el.matches('[aria-label]')) {
   84    95 		// FIXME: may skip to 2E
@@ -118,30 +129,16 @@ var getName = function(el, recursive, visited, directReference) {
  118   129 		}
  119   130 	}
  120   131 
  121    -1 	// E
  122    -1 	if (!ret.trim() && (recursive || isInLabelForOtherWidget(el) || query.matches(el, 'button'))) {
  123    -1 		if (query.matches(el, 'textbox,button,combobox,listbox,range')) {
  124    -1 			if (query.matches(el, 'textbox,button')) {
  125    -1 				ret = el.value || el.textContent;
  126    -1 			} else if (query.matches(el, 'combobox,listbox')) {
  127    -1 				var selected = query.querySelector(el, ':selected') || query.querySelector(el, 'option');
  128    -1 				if (selected) {
  129    -1 					ret = getName(selected, recursive, visited);
  130    -1 				} else {
  131    -1 					ret = el.value || '';
  132    -1 				}
  133    -1 			} else if (query.matches(el, 'range')) {
  134    -1 				ret = '' + (query.getAttribute(el, 'valuetext') || query.getAttribute(el, 'valuenow') || el.value);
  135    -1 			}
  136    -1 		}
  137    -1 	}
  138    -1 
  139   132 	// F
  140   133 	// FIXME: menu is not mentioned in the spec
  141   134 	if (!ret.trim() && (recursive || allowNameFromContent(el) || el.closest('label')) && !query.matches(el, 'menu')) {
  142   135 		ret = getContent(el, visited);
  143   136 	}
  144   137 
   -1   138 	if (!ret.trim() && query.matches(el, 'button')) {
   -1   139 		ret = el.value || '';
   -1   140 	}
   -1   141 
  145   142 	if (!ret.trim()) {
  146   143 		for (var selector in constants.nameDefaults) {
  147   144 			if (el.matches(selector)) {