os0x (owner)

Forks

Revisions

gist: 104812 Download_button fork
public
Public Clone URL: git://gist.github.com/104812.git
Embed All Files: show embed
twitterautopager.user.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
63
64
65
66
67
68
69
70
71
72
73
// ==UserScript==
// @name twitter.AutoPager
// @namespace http://ss-o.net/
// @version 0.2
// @include http://twitter.com/*
// @include https://twitter.com/*
// ==/UserScript==
 
// Thx! id:Constellation
(function autopager(unsafeWindow,loaded){
if (!loaded && window.opera && document.readyState == 'interactive') {
document.addEventListener('DOMContentLoaded', function(){autopager(unsafeWindow,true);}, false);
return;
}
var state = true;
var remainHeight = 400;
var loading = false;
var win = this.contentWindow || window;
var filters = [];
if (!win.AutoPagerize) {
win.AutoPagerize = {
addFilter:function(f) {
filters.push(f);
}
};
}
var ev = document.createEvent('Event');
ev.initEvent('GM_AutoPagerizeLoaded', true, true);
document.dispatchEvent(ev);
var last = get_last_line();
var filter = function(){
loading = false;
var docs = get_inserted_line(last.id);
filters.forEach(function(f){
f(docs);
});
last = get_last_line();
};
 
if (typeof unsafeWindow.onPageChange === 'function') {
var _onPageChange = unsafeWindow.onPageChange;
unsafeWindow.onPageChange = function(){
_onPageChange();
filter();
};
} else {
unsafeWindow.onPageChange = filter;
}
window.addEventListener('scroll', function(){
if (loading) return;
var remain = document.documentElement.scrollHeight - window.innerHeight - window.pageYOffset;
if (state && remain < remainHeight)
click_more();
}, false);
function click_more(){
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
get_more().dispatchEvent(event);
loading = true;
}
function get_more(){
return document.getElementById('more');
}
function get_last_line(){
return document.evaluate('id("timeline")/li[last()]',document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;
}
function get_inserted_line(id){
var x = 'id("timeline")/li[preceding-sibling::li[@id="'+id+'"]]';
var res=[],r = document.evaluate(x,document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0,l = r.snapshotLength;i<l;i++) res.push(r.snapshotItem(i));
return res;
}
})(this.contentWindow||this.unsafeWindow||window,0);