OAA LINK_4: Links that point to different HREFs should have different link text.

Rulesets

WCAG 2.0 Requirement 2.4.9 Link Purpose (Link Only)
Status: Accepted
Severity: Violation
Priority: Priority 1
IITAA 1.0 9.1 Ensure that links are understandable out of context.
Type:
Severity: Violation
Priority: Priority 1
Status: Accepted

Markup References

Validation Code

Message

Ensure that links that point to different HREFs use different link text.

Dependencies

None

Context

document

Parameters

None

Code

function (ruleContext) {

  var passed = true;
  var loadArray = new Array();
  var retArray = new Array();
  
  for (var j = 0; j < ruleContext.links.length; j++) {
  
    var link4Cmp = ruleContext.links[j].href.toLowerCase();
    link4Cmp = link4Cmp.replace(/default.[a-z]*|index.[a-z]*/,'');
    
    var obj = {
      node: ruleContext.links[j],
      text: util.getNodeTextRecursively(ruleContext.links[j]).toLowerCase(),
      link4Cmp: link4Cmp
    }; // endobj
    
    loadArray[loadArray.length] = obj;
    
  } // endfor
    
  for (var j = 0; j < loadArray.length; j++) {
    for (var k = j + 1; k < loadArray.length; k++) {
      if (loadArray[j].text == loadArray[k].text && loadArray[j].link4Cmp != loadArray[k].link4Cmp) {
        loadArray[j].sameLinkdiffURL = true; loadArray[k].sameLinkdiffURL = true;
        passed = false;
      } // endif
    } // endfor
    
    for (var j = 0; j < loadArray.length; j++) {
      if (loadArray[j].sameLinkdiffURL) {
        retArray.push(loadArray[j]);
      } // endif
    } // endfor
      
  } // endfor
    
  return new ValidationResult(passed, retArray, '', '', []);
    
}  // endfunction