diff options
Diffstat (limited to 'vimiumFrontend.js')
| -rw-r--r-- | vimiumFrontend.js | 52 | 
1 files changed, 51 insertions, 1 deletions
| diff --git a/vimiumFrontend.js b/vimiumFrontend.js index 3ca5f6a2..c5b7bdf8 100644 --- a/vimiumFrontend.js +++ b/vimiumFrontend.js @@ -248,6 +248,11 @@ function zoomOut() {    saveZoomLevel(window.location.host, currentZoomLevel);  } +function zoomReset() { +  setPageZoomLevel(100, true); +  saveZoomLevel(window.location.host, 100); +} +  function scrollToBottom() { window.scrollTo(window.pageXOffset, document.body.scrollHeight); }  function scrollToTop() { window.scrollTo(window.pageXOffset, 0); }  function scrollToLeft() { window.scrollTo(0, window.pageYOffset); } @@ -569,6 +574,45 @@ function performBackwardsFind() {    findModeQueryHasResults = window.find(findModeQuery, false, true, true, false, true, false);  } +function findAndFollowLink(linkStrings) { +  for (i = 0; i < linkStrings.length; i++) { +    var findModeQueryHasResults = window.find(linkStrings[i], false, true, true, false, true, false); +    if (findModeQueryHasResults) { +      var node = window.getSelection().anchorNode; +      while (node.nodeName != 'BODY') { +        if (node.nodeName == 'A') { +          window.location = node.href; +          return true; +        } +        node = node.parentNode; +      } +    } +  } +} + +function findAndFollowRel(value) { +  var relTags = ['link', 'a', 'area']; +  for (i = 0; i < relTags.length; i++) { +    var elements = document.getElementsByTagName(relTags[i]); +    for (j = 0; j < elements.length; j++) { +      if (elements[j].hasAttribute('rel') && elements[j].rel == value) { +        window.location = elements[j].href; +        return true; +      } +    } +  } +} + +function goPrevious() { +  var previousStrings = ["\bprev\b","\bprevious\b","\u00AB","<<","<"]; +  findAndFollowRel('prev') || findAndFollowLink(previousStrings); +} + +function goNext() { +  var nextStrings = ["\bnext\b","\u00BB",">>","\bmore\b",">"]; +  findAndFollowRel('next') || findAndFollowLink(nextStrings); +} +  function showFindModeHUDForQuery() {    if (findModeQueryHasResults || findModeQuery.length == 0)      HUD.show("/" + insertSpaces(findModeQuery)); @@ -610,12 +654,18 @@ function showHelpDialog(html, fid) {    isShowingHelpDialog = true;    var container = document.createElement("div");    container.id = "vimiumHelpDialogContainer"; + +  document.body.appendChild(container); +    container.innerHTML = html; +  // This is necessary because innerHTML does not evaluate javascript embedded in <script> tags. +  var scripts = Array.prototype.slice.call(container.getElementsByTagName("script")); +  scripts.forEach(function(script) { eval(script.text); }); +    container.getElementsByClassName("closeButton")[0].addEventListener("click", hideHelpDialog, false);    container.getElementsByClassName("optionsPage")[0].addEventListener("click",        function() { chrome.extension.sendRequest({ handler: "openOptionsPageInNewTab" }); }, false); -  document.body.appendChild(container);    var dialog = document.getElementById("vimiumHelpDialog");    dialog.style.zIndex = "99999998";    var zoomFactor = currentZoomLevel / 100.0; | 
