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; |
