Merge pull request #291 from usk/feature/do-not-follow-link-which-has-aria-hidden-attribute-or-aria-disabled-attribute
do not follow link which has aria-hidden attribute or aria-disabled a…
This commit is contained in:
commit
df18fb337f
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