aboutsummaryrefslogtreecommitdiffstats
path: root/vimiumFrontend.js
diff options
context:
space:
mode:
Diffstat (limited to 'vimiumFrontend.js')
-rw-r--r--vimiumFrontend.js52
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;