diff options
| author | jez | 2010-12-31 11:18:01 +0800 | 
|---|---|---|
| committer | jez | 2010-12-31 11:18:01 +0800 | 
| commit | 83be3670b293fa78a8c74d092be9f6c4cdb6d66b (patch) | |
| tree | 175e7768c25543a58f4c89095f4dc942d95673f4 /vimiumFrontend.js | |
| parent | 489ff3f8f0f7b44817a09472b5b1e2fad46d7632 (diff) | |
| parent | 1fd0a389ffe7460ac1c658227f0627c050153632 (diff) | |
| download | vimium-83be3670b293fa78a8c74d092be9f6c4cdb6d66b.tar.bz2 | |
Merge remote branch 'origin/master' into filter-hints
Diffstat (limited to 'vimiumFrontend.js')
| -rw-r--r-- | vimiumFrontend.js | 24 | 
1 files changed, 18 insertions, 6 deletions
diff --git a/vimiumFrontend.js b/vimiumFrontend.js index dac778cb..7289c135 100644 --- a/vimiumFrontend.js +++ b/vimiumFrontend.js @@ -26,6 +26,17 @@ var linkHintCss;  // TODO(philc): This should be pulled from the extension's storage when the page loads.  var currentZoomLevel = 100; +// The types in <input type="..."> that we consider for focusInput command. Right now this is recalculated in +// each content script. Alternatively we could calculate it once in the background page and use a request to +// fetch it each time. +// +// Should we include the HTML5 date pickers here? +var textInputTypes = ["text", "search", "email", "url", "number"]; +// The corresponding XPath for such elements. +var textInputXPath = '//input[' + +                     textInputTypes.map(function (type) { return '@type="' + type + '"'; }).join(" or ") + +                     ' or not(@type)]'; +  /*   * Give this frame a unique id.   */ @@ -245,8 +256,8 @@ function scrollLeft() { window.scrollBy(-1 * settings["scrollStepSize"], 0); }  function scrollRight() { window.scrollBy(settings["scrollStepSize"], 0); }  function focusInput(count) { -  var xpath = '//input[@type="text" or @type="search"]'; -  var results = document.evaluate(xpath, document.documentElement, null, +  var results = document.evaluate(textInputXPath, +                                  document.documentElement, null,                                    XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);    var lastInputBox; @@ -268,7 +279,7 @@ function reload() { window.location.reload(); }  function goBack() { history.back(); }  function goForward() { history.forward(); } -function goUp() { +function goUp(count) {    var url = window.location.href;    if (url[url.length-1] == '/')      url = url.substring(0, url.length - 1); @@ -276,7 +287,7 @@ function goUp() {    var urlsplit = url.split('/');    // make sure we haven't hit the base domain yet    if (urlsplit.length > 3) { -    delete urlsplit[urlsplit.length-1]; +    urlsplit = urlsplit.slice(0, Math.max(3, urlsplit.length - count));      window.location.href = urlsplit.join('/');    }  } @@ -638,6 +649,7 @@ HUD = {        "bottom: 0px;" +        "color: black;" +        "height: 13px;" + +      "width: auto;" +        "max-width: 400px;" +        "min-width: 150px;" +        "text-align: left;" + @@ -800,8 +812,8 @@ Tween = {  function addCssToPage(css) {    var head = document.getElementsByTagName("head")[0];    if (!head) { -    console.log("Warning: unable to add CSS to the page."); -    return; +    head = document.createElement("head"); +    document.documentElement.appendChild(head);    }    var style = document.createElement("style");    style.type = "text/css";  | 
