diff options
Diffstat (limited to 'vimiumFrontend.js')
| -rw-r--r-- | vimiumFrontend.js | 30 | 
1 files changed, 23 insertions, 7 deletions
| diff --git a/vimiumFrontend.js b/vimiumFrontend.js index d74c6d53..7677f96c 100644 --- a/vimiumFrontend.js +++ b/vimiumFrontend.js @@ -76,7 +76,11 @@ function initializePreDomReady() {      if (port.name == "executePageCommand") {        port.onMessage.addListener(function(args) {          if (this[args.command]) { -          for (var i = 0; i < args.count; i++) { this[args.command].call(); } +          if (args.passCountToFunction) { +            this[args.command].call(null, args.count); +          } else { +            for (var i = 0; i < args.count; i++) { this[args.command].call(); } +          }          }          refreshCompletionKeys(args.completionKeys); @@ -198,13 +202,25 @@ function scrollFullPageDown() { window.scrollBy(0, window.innerHeight); }  function scrollLeft() { window.scrollBy(-1 * settings["scrollStepSize"], 0); }  function scrollRight() { window.scrollBy(settings["scrollStepSize"], 0); } -function focusFirstInput() { +function focusInput(count) {    var xpath = '//input[@type="text" or @type="search"]'; -  var result = document.evaluate(xpath, document.documentElement, null, -      XPathResult.FIRST_ORDERED_NODE_TYPE, null); -  if (!result.singleNodeValue) -    return; -  result.singleNodeValue.focus(); +  var results = document.evaluate(xpath, document.documentElement, null, +                                  XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); + +  var lastInputBox; +  var i = 0; + +  while (i < count) +  { +    i += 1; + +    var currentInputBox = results.iterateNext(); +    if (!currentInputBox) { break; } + +    lastInputBox = currentInputBox; +  } + +  if (lastInputBox) { lastInputBox.focus(); }  }  function reload() { window.location.reload(); } | 
