-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsource.js
62 lines (56 loc) · 2.12 KB
/
source.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var source = function(){
var baseElement = document.getElementsByClassName('comic-table')[0];
var containerElement = document.createElement('div');
containerElement.className = 'infinite-scroll-container';
baseElement.parentElement.insertBefore(containerElement, baseElement);
baseElement.parentElement.removeChild(baseElement);
containerElement.appendChild(baseElement);
var nextImageURLFN = function(element){
var links = element.getElementsByTagName('a');
if(links.length > 1){
console.log('Too many links on latest element.');
return null;
} else if (links.length == 0){
console.log('No links on latest element');
return null;
} else {
var linkToReturn = links[0].href;
links[0].setAttribute('old_href', linkToReturn);
links[0].removeAttribute('href');
return linkToReturn;
}
};
var nextPageRequest = new XMLHttpRequest();
var isLoadingNextImage = false;
var mostRecentImageElement = baseElement;
var nextImageURL = nextImageURLFN(mostRecentImageElement);
console.log('Should have called the function thing for next url.');
document.body.onscroll = function() {
if(!isLoadingNextImage && mostRecentImageElement.getBoundingClientRect().bottom - window.scrollY <= 0.0){
isLoadingNextImage = true;
if(nextImageURL != null){
console.log('Should load next image.!');
nextPageRequest.open('GET',nextImageURL);
nextPageRequest.send();
} else {
console.log('Want to load next image but no url!');
}
}
}
nextPageRequest.onload = function(){
if(nextPageRequest.status != 200){
console.log('Error retrieving page for url: '+nextImageURL);
return;
}
var tempDom = document.createElement('div');
tempDom.innerHTML = nextPageRequest.responseText;
var nextComicPanel = tempDom.getElementsByClassName('comic-table')[0];
nextComicPanel.parentElement.removeChild(nextComicPanel);
containerElement.insertBefore(nextComicPanel, null);
mostRecentImageElement = nextComicPanel;
nextImageURL = nextImageURLFN(mostRecentImageElement);
isLoadingNextImage = false;
}
return 'Injection complete.';
};
source();