do not follow link which has aria-hidden attribute or aria-disabled attribute
This commit is contained in:
parent
a133ee3d6a
commit
de7883329b
1 changed files with 16 additions and 0 deletions
|
@ -30,6 +30,21 @@ const inViewport = (win, element, viewSize, framePosition) => {
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isAriaHiddenOrAriaDisabled = (win, element) => {
|
||||||
|
if (!element || win.document.documentElement === element) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (let attr of ['aria-hidden', 'aria-disabled']) {
|
||||||
|
if (element.hasAttribute(attr)) {
|
||||||
|
let hidden = element.getAttribute(attr).toLowerCase();
|
||||||
|
if (hidden === '' || hidden === 'true') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return isAriaHiddenOrAriaDisabled(win, element.parentNode);
|
||||||
|
};
|
||||||
|
|
||||||
export default class Follow {
|
export default class Follow {
|
||||||
constructor(win, store) {
|
constructor(win, store) {
|
||||||
this.win = win;
|
this.win = win;
|
||||||
|
@ -171,6 +186,7 @@ export default class Follow {
|
||||||
style.visibility !== 'hidden' &&
|
style.visibility !== 'hidden' &&
|
||||||
element.type !== 'hidden' &&
|
element.type !== 'hidden' &&
|
||||||
element.offsetHeight > 0 &&
|
element.offsetHeight > 0 &&
|
||||||
|
!isAriaHiddenOrAriaDisabled(win, element) &&
|
||||||
inViewport(win, element, viewSize, framePosition);
|
inViewport(win, element, viewSize, framePosition);
|
||||||
});
|
});
|
||||||
return filtered;
|
return filtered;
|
||||||
|
|
Reference in a new issue