素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

要素が実際に見えているかどうか調べる関数

Hit-a-Hintやvimperatorで、どうやって見えているリンクのみを探しているのか調べた。
下のようにすればいいようだ。

function isVisible(elem) {
  var style = getComputedStyle(elem, null);
  var position = elem.getBoundingClientRect();
  return style.display != 'none' && style.visibility != 'hidden' && position.left >= 0 && position.top >= 0 && position.bottom <= window.innerHeight && position.right <= window.innerWidth;

}

Array.filter(document.getElementsByTagName('*'),
function(link) {
  return isVisible(link)
})