From f2ead0570e24c41cf648ad53ff1b41c98fd84d6a Mon Sep 17 00:00:00 2001 From: Noah Levitt Date: Thu, 24 Sep 2015 12:20:19 -0700 Subject: [PATCH] fixes for psu24 behavior --- umbra/behaviors.d/{psu.js => psu24.js} | 63 +++++++++----------------- umbra/behaviors.yaml | 2 +- 2 files changed, 22 insertions(+), 43 deletions(-) rename umbra/behaviors.d/{psu.js => psu24.js} (70%) diff --git a/umbra/behaviors.d/psu.js b/umbra/behaviors.d/psu24.js similarity index 70% rename from umbra/behaviors.d/psu.js rename to umbra/behaviors.d/psu24.js index 17e8412..8084bca 100644 --- a/umbra/behaviors.d/psu.js +++ b/umbra/behaviors.d/psu24.js @@ -1,20 +1,10 @@ -var umbraAboveBelowOrOnScreen = function(e) { - var eTop = e.getBoundingClientRect().top; - if (eTop < window.scrollY) { - return -1; // above - } else if (eTop > window.scrollY + window.innerHeight) { - return 1; // below - } else { - return 0; // on screen - } -} -var umbraSimpleScrollsAndClicksBehavior = { +var umbraBehavior = { IDLE_TIMEOUT_SEC : 10, idleSince : null, alreadyClicked : {}, - intervalFunc : function() { + intervalFunc: function() { var clickedSomething = false; var somethingLeftBelow = false; var somethingLeftAbove = false; @@ -28,20 +18,13 @@ var umbraSimpleScrollsAndClicksBehavior = { } for (var j = 0; j < documents.length; j++) { - var clickTargets = documents[j].querySelectorAll("a[id='load-more']"); - - if (umbraCheckAtEndOfScrollingContent(documents[j])) { - return; - } - - for ( var i = 0; i < clickTargets.length; i++) { - if (clickTargets[i].umbraClicked) { + for (var i = 0; i < clickTargets.length; i++) { + if (clickTargets[i].className === "disabled") { continue; } - var where = umbraAboveBelowOrOnScreen(clickTargets[i]); - + var where = this.aboveBelowOrOnScreen(clickTargets[i]); if (where == 0) { console.log("clicking on " + clickTargets[i].outerHTML); // do mouse over event on click target @@ -54,7 +37,6 @@ var umbraSimpleScrollsAndClicksBehavior = { clickTargets[i].click(); clickedSomething = true; this.idleSince = null; - clickTargets[i].umbraClicked = true; break; //break from clickTargets loop, but not from iframe loop } else if (where > 0) { @@ -90,14 +72,25 @@ var umbraSimpleScrollsAndClicksBehavior = { } }, - start : function() { + aboveBelowOrOnScreen: function(e) { + var eTop = e.getBoundingClientRect().top; + if (eTop < window.scrollY) { + return -1; // above + } else if (eTop > window.scrollY + window.innerHeight) { + return 1; // below + } else { + return 0; // on screen + } + }, + + start: function() { var that = this; this.intervalId = setInterval(function() { that.intervalFunc() }, 250); }, - isFinished : function() { + isFinished: function() { if (this.idleSince != null) { var idleTimeMs = Date.now() - this.idleSince; if (idleTimeMs / 1000 > this.IDLE_TIMEOUT_SEC) { @@ -108,24 +101,10 @@ var umbraSimpleScrollsAndClicksBehavior = { }, }; - -var umbraCheckAtEndOfScrollingContent = function(document) { - var elementToCheck = document.querySelector("a[id='load-more'][class='disabled']"); - - if (elementToCheck) { - var computedStyle = window.getComputedStyle(elementToCheck); - - if (computedStyle) { - return computerStyle.visibility=='hidden'; - } - } - - return false; -} - // Called from outside of this script. var umbraBehaviorFinished = function() { - return umbraSimpleScrollsAndClicksBehavior.isFinished() + return umbraBehavior.isFinished() }; -umbraSimpleScrollsAndClicksBehavior.start(); \ No newline at end of file +umbraBehavior.start(); + diff --git a/umbra/behaviors.yaml b/umbra/behaviors.yaml index 21b1945..e5ea670 100644 --- a/umbra/behaviors.yaml +++ b/umbra/behaviors.yaml @@ -18,7 +18,7 @@ behaviors: request_idle_timeout_sec: 10 - url_regex: '^https?://(?:www\.)?psu24.psu.edu/.*$' - behavior_js: psu.js + behavior_js: psu24.js request_idle_timeout_sec: 10 - url_regex: '^https?://(?:www\.)?instagram\.com/.*$'