IntroJs提示当父元素不可见时,如何跳过或隐藏?出于某种原因,只有内联似乎是为我的提示工作。我有数据提示在HTML的跨度,我需要检查是否最近的元素是可见的或父/子元素。
var hints = false;
var all = document.getElementsByTagName("*");
函数introFunction() {
for (var i = 0, max = all.length; i < max; i++) {
if ((isHidden(all[i]) && hints));
document.getElementById("#helpFunc").html("Show Help");
introJs().hideHints();
} else {
document.getElementById("#helpFunc").html("Hide Help");
introJs().showHints();
}
hints = !hints;
function isHidden(el) {
var style = window.getComputedStyle(el);
return ((style.display === 'none') || (style.visibility === 'hidden'));
}
}
与其尝试获取元素的计算样式,不如尝试检查元素的边界矩形——如果没有,则表示该元素不可见。
!!el.getClientRects().length; // false means el or its parent(s) is hidden
LE:这对"visibility: hidden;"不起作用虽然。所以也许你可以把上面的和你已有的结合起来。