diff options
| author | int3 | 2010-04-07 21:39:18 +0000 | 
|---|---|---|
| committer | ilya | 2010-04-18 21:59:36 -0700 | 
| commit | 89e1336d1e56543719f3cf9e43189ff9da708a68 (patch) | |
| tree | 6b955ea0d4caa045c338ca0f7a5a6ce673df81ae /test_harnesses | |
| parent | fff51fd109130bd956fa8d2a2702c969fa8b728d (diff) | |
| download | vimium-89e1336d1e56543719f3cf9e43189ff9da708a68.tar.bz2 | |
Fix visibility tests
Diffstat (limited to 'test_harnesses')
| -rw-r--r-- | test_harnesses/visibility_test.html | 27 | 
1 files changed, 20 insertions, 7 deletions
| diff --git a/test_harnesses/visibility_test.html b/test_harnesses/visibility_test.html index ffc008bd..5fa4d728 100644 --- a/test_harnesses/visibility_test.html +++ b/test_harnesses/visibility_test.html @@ -25,14 +25,27 @@        }      }      /* -     * Determines whether this element is on screen and visible. -     * See this for some helpful discussion: -     * http://stackoverflow.com/questions/704758/how-to-check-if-an-element-is-really-visible-with-javascript +     * Determine whether elements are visible. +     * Inspired by Vimperator.       */      function isVisible(element) { -      var boundingRect = element.getBoundingClientRect(); -      var elementFromPoint = document.elementFromPoint(boundingRect.left, boundingRect.top); -      return elementFromPoint == element; +      // eliminate offscreen elements (case 4) +      var rect = element.getBoundingClientRect(); +      if (!rect || rect.top > window.innerHeight || rect.bottom < 0 || rect.left > window.innerWidth || rect.right < 0) +          return false; + +      // this catches cases 2, 3, & 5 +      var computedStyle = window.getComputedStyle(element, null); +      if (computedStyle.getPropertyValue('visibility') != 'visible' ||  +          computedStyle.getPropertyValue('display') == 'none') +          return false; + +      // this catches cases 3 & 6 +      var clientRect = element.getClientRects()[0]; +      if (!clientRect) +        return false; + +      return true;      }    </script>  </head> @@ -55,4 +68,4 @@    <div style="opacity:0">      <span id="div7true" style="opacity:0"></span>    </div> -</html>
\ No newline at end of file +</html> | 
