This commit is contained in:
Noah Levitt 2015-09-14 17:57:01 -07:00
parent 4624f47402
commit b30cc2d68b
2 changed files with 60 additions and 32 deletions

View file

@ -1,41 +1,58 @@
var umbraSimpleClicksBehavior = { var umbraSimpleClicksBehavior = {
IDLE_TIMEOUT_SEC: 10, IDLE_TIMEOUT_SEC: 10,
idleSince: null, idleSince: null,
alreadyClicked: {}, alreadyClicked: {},
intervalFunc: function() { intervalFunc: function() {
var clickTargets = document.querySelectorAll("${click_css_selector}"); var iframes = document.querySelectorAll("iframe");
var documents = Array(iframes.length + 1);
documents[0] = document;
for (var i = 0; i < iframes.length; i++) {
documents[i+1] = iframes[i].contentWindow.document;
}
for (var i = 0; i < clickTargets.length; i++) { for (var j = 0; j < documents.length; j++) {
var key = clickTargets[i].outerHTML; var clickTargets = documents[j].querySelectorAll("${click_css_selector}");
if (!this.alreadyClicked[key]) { for (var i = 0; i < clickTargets.length; i++) {
console.log("clicking on " + key); var key = clickTargets[i].outerHTML;
clickTargets[i].click(); if (!this.alreadyClicked[key]) {
this.alreadyClicked[key] = true; console.log("clicking on " + key);
this.idleSince = null;
return;
}
}
if (!this.idleSince) { // do mouse over event on click target
this.idleSince = Date.now(); // since some urls are requsted only on
} // this event - see
}, // https://webarchive.jira.com/browse/AITFIVE-451
var mouseOverEvent = document.createEvent('Events');
mouseOverEvent.initEvent("mouseover", true, false);
clickTargets[i].dispatchEvent(mouseOverEvent);
start: function() { clickTargets[i].click();
var that = this; this.alreadyClicked[key] = true;
this.intervalId = setInterval(function(){ that.intervalFunc() }, 250); this.idleSince = null;
}, return;
}
}
}
isFinished: function() { if (!this.idleSince) {
if (this.idleSince != null) { this.idleSince = Date.now();
var idleTimeMs = Date.now() - this.idleSince; }
if (idleTimeMs / 1000 > this.IDLE_TIMEOUT_SEC) { },
return true;
} start: function() {
} var that = this;
return false; this.intervalId = setInterval(function(){ that.intervalFunc() }, 250);
}, },
isFinished: function() {
if (this.idleSince != null) {
var idleTimeMs = Date.now() - this.idleSince;
if (idleTimeMs / 1000 > this.IDLE_TIMEOUT_SEC) {
return true;
}
}
return false;
},
}; };
// Called from outside of this script. // Called from outside of this script.

View file

@ -28,6 +28,17 @@ behaviors:
url_regex: '^https?://(?:www\.)?usask.ca/.*$' url_regex: '^https?://(?:www\.)?usask.ca/.*$'
click_css_selector: a[id='feature-next'] click_css_selector: a[id='feature-next']
request_idle_timeout_sec: 10 request_idle_timeout_sec: 10
# https://webarchive.jira.com/browse/ARI-4128
url_regex: '^https?://(?:www\.)?psu24.psu.edu/.*$'
click_css_selector: a[id='load-more']
- # https://webarchive.jira.com/browse/AITFIVE-451
url_regex: '^https?://(?:www\.)?soundcloud.com/.*$'
click_css_selector: button.sc-button-play, button.playButton
request_idle_timeout_sec: 10
- # https://webarchive.jira.com/browse/AITFIVE-463
url_regex: '^https?://(?:www\.)?christophercerrone.com/.*$'
click_css_selector: button.playButton.medium
request_idle_timeout_sec: 10
- # default fallback brhavior - # default fallback brhavior
url_regex: '^.*$' url_regex: '^.*$'
request_idle_timeout_sec: 10 request_idle_timeout_sec: 10