aboutsummaryrefslogtreecommitdiffstats
path: root/linkHints.js
diff options
context:
space:
mode:
authorPhil Crosby2011-02-16 23:28:55 -0800
committerPhil Crosby2011-02-16 23:28:55 -0800
commite2faa2c815cf74458b4fba0aed3346046d3075ed (patch)
tree562c7997e698621f4e136da25bb11178e3b199a2 /linkHints.js
parent4710d254fa8636d3a900ccccbb96d1821483bef3 (diff)
downloadvimium-e2faa2c815cf74458b4fba0aed3346046d3075ed.tar.bz2
Tighten up the array-length caching from the previous patch, and don't bother caching array lengths for non-dom collections.
Diffstat (limited to 'linkHints.js')
-rw-r--r--linkHints.js28
1 files changed, 10 insertions, 18 deletions
diff --git a/linkHints.js b/linkHints.js
index ba438f4d..45f54a9d 100644
--- a/linkHints.js
+++ b/linkHints.js
@@ -71,8 +71,7 @@ function buildLinkHints() {
// highlight all the links on the page; we don't want some link hints to have more chars than others.
var digitsNeeded = Math.ceil(logXOfBase(visibleElements.length, settings.linkHintCharacters.length));
var linkHintNumber = 0;
- var visiEleLength = visibleElements.length;
- for (var i = 0; i < visiEleLength; i++) {
+ for (var i = 0, count = visibleElements.length; i < count; i++) {
hintMarkers.push(createMarkerFor(visibleElements[i], linkHintNumber, digitsNeeded));
linkHintNumber++;
}
@@ -82,8 +81,7 @@ function buildLinkHints() {
// Also note that adding these nodes to document.body all at once is significantly faster than one-by-one.
hintMarkerContainingDiv = document.createElement("div");
hintMarkerContainingDiv.className = "internalVimiumHintMarker";
- var hintMarkerLength = hintMarkers.length;
- for (var i = 0; i < hintMarkerLength; i++)
+ for (var i = 0; i < hintMarkers.length; i++)
hintMarkerContainingDiv.appendChild(hintMarkers[i]);
document.documentElement.appendChild(hintMarkerContainingDiv);
}
@@ -106,8 +104,7 @@ function getVisibleClickableElements() {
var visibleElements = [];
// Find all visible clickable elements.
- var resultSetLength = resultSet.snapshotLength;
- for (var i = 0; i < resultSetLength; i++) {
+ for (var i = 0, count = resultSet.snapshotLength; i < count; i++) {
var element = resultSet.snapshotItem(i);
var clientRect = element.getClientRects()[0];
@@ -117,8 +114,7 @@ function getVisibleClickableElements() {
// If the link has zero dimensions, it may be wrapping visible
// but floated elements. Check for this.
if (clientRect && (clientRect.width == 0 || clientRect.height == 0)) {
- var eleChildLength = element.children.length;
- for (var j = 0; j < eleChildLength; j++) {
+ for (var j = 0, childrenCount = element.children.length; j < childrenCount; j++) {
if (window.getComputedStyle(element.children[j], null).getPropertyValue('float') != 'none') {
var childClientRect = element.children[j].getClientRects()[0];
if (isVisible(element.children[j], childClientRect)) {
@@ -247,15 +243,14 @@ function isSelectable(element) {
*/
function highlightLinkMatches(searchString) {
var linksMatched = [];
- var hintMarkersLength = hintMarkers.length;
- for (var i = 0; i < hintMarkersLength; i++) {
+ for (var i = 0; i < hintMarkers.length; i++) {
var linkMarker = hintMarkers[i];
if (linkMarker.getAttribute("hintString").indexOf(searchString) == 0) {
if (linkMarker.style.display == "none")
linkMarker.style.display = "";
- var linkChildLength = linkMarker.childNodes.length;
- for (var j = 0; j < linkChildLength; j++)
- linkMarker.childNodes[j].className = (j >= searchString.length) ? "" : "matchingCharacter";
+ var childNodes = linkMarker.childNodes;
+ for (var j = 0, childNodesCount = childNodes.length; j < childNodesCount; j++)
+ childNodes[j].className = (j >= searchString.length) ? "" : "matchingCharacter";
linksMatched.push(linkMarker.clickableItem);
} else {
linkMarker.style.display = "none";
@@ -280,9 +275,7 @@ function numberToHintString(number, numHintDigits) {
} while (number > 0);
// Pad the hint string we're returning so that it matches numHintDigits.
- var hintStringLength = hintString.length;
- var numDigitsHintLength = numHintDigits - hintStringLength;
- for (var i = 0; i < numDigitsHintLength; i++)
+ for (var i = 0; i < numHintDigits - hintString.length; i++)
hintString.unshift(settings.linkHintCharacters[0]);
return hintString.join("");
}
@@ -326,8 +319,7 @@ function createMarkerFor(link, linkHintNumber, linkHintDigits) {
marker.className = "internalVimiumHintMarker vimiumHintMarker";
var innerHTML = [];
// Make each hint character a span, so that we can highlight the typed characters as you type them.
- var hintStringLength = hintString.length;
- for (var i = 0; i < hintStringLength; i++)
+ for (var i = 0; i < hintString.length; i++)
innerHTML.push("<span>" + hintString[i].toUpperCase() + "</span>");
marker.innerHTML = innerHTML.join("");
marker.setAttribute("hintString", hintString);