diff options
| author | Akira Ohnishi | 2011-07-30 00:36:46 +0900 | 
|---|---|---|
| committer | Akira Ohnishi | 2011-10-09 01:16:18 +0900 | 
| commit | a77ddcba854c7946f8791b9a0d599759ad557b75 (patch) | |
| tree | 0641083af626d39f246e77b23b8e4d129210c20a /linkHints.js | |
| parent | 04ce1512b62981004134e177c134d4cd029b99e8 (diff) | |
| download | vimium-a77ddcba854c7946f8791b9a0d599759ad557b75.tar.bz2 | |
fixes #393: detect Image map in hint mode
Diffstat (limited to 'linkHints.js')
| -rw-r--r-- | linkHints.js | 20 | 
1 files changed, 19 insertions, 1 deletions
| diff --git a/linkHints.js b/linkHints.js index 79ef5ef1..057e9e47 100644 --- a/linkHints.js +++ b/linkHints.js @@ -40,7 +40,7 @@ var linkHints = {     * The final expression will be something like "//button | //xhtml:button | ..."     */    clickableElementsXPath: (function() { -    var clickableElements = ["a", "textarea", "button", "select", "input[not(@type='hidden')]", +    var clickableElements = ["a", "area[@href]", "textarea", "button", "select", "input[not(@type='hidden')]",                               "*[@onclick or @tabindex or @role='link' or @role='button']"];      var xpath = [];      for (var i in clickableElements) @@ -147,6 +147,24 @@ var linkHints = {            break;          }        } + +      if (element.localName === "area") { +        var map = element.parentElement; +        var img = document.querySelector("img[usemap='#" + map.getAttribute("name") + "']"); +        var clientRect = img.getClientRects()[0]; +        var c = element.coords.split(/,/); +        var coords = [parseInt(c[0], 10), parseInt(c[1], 10), parseInt(c[2], 10), parseInt(c[3], 10)]; +        var rect = { +          top: clientRect.top + coords[1], +          left: clientRect.left + coords[0], +          right: clientRect.left + coords[2], +          bottom: clientRect.top + coords[3], +          width: coords[2] - coords[0], +          height: coords[3] - coords[1] +        }; + +        visibleElements.push({element: element, rect: rect}); +      }      }      return visibleElements;    }, | 
