-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontent-script.js
91 lines (85 loc) · 3.05 KB
/
content-script.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
https://addons.mozilla.org/en-US/firefox/search/?q=page+scroll&appver=&platform=linux
后面还可以增加 1 自动卷屏的指令, 2 同步配置,导入导出配置, 3 按站点改为按url控制粒度更细,4 增加个禁用按钮
*/
document.addEventListener('keypress', function (e) {
if (document.activeElement.tagName=="INPUT" || document.activeElement.tagName=="TEXTAREA") {
return;
}
browser.storage.local.get('wasd-enabled').then( enabled => {
let _enabled = true;;
if (enabled.hasOwnProperty('wasd-enabled')) {
_enabled = enabled['wasd-enabled'] ? true:false;
} else if (enabled.hasOwnProperty(0) && enabled[0].hasOwnProperty('wasd-enabled')) {
_enabled = enabled[0]['wasd-enabled'] ? true:false;
}
if (!_enabled) {
return;
}
let keyName = e.key.toUpperCase();
let gotoNext = true;
let gotoHome = false;
let gotoEnd = false;
let gotoPageup = false;
let gotoPagedown = false;
if (['A','D','S','W','Q','E'].indexOf(keyName)<0) {
return;
} else {
if (keyName === 'A') {
gotoNext = false;
} else if (keyName === 'D') {
gotoNext = true;
} else if (keyName === 'W') {
gotoPageup = true;
window.scrollByPages(-1);
return;
} else if (keyName === 'S') {
gotoPagedown = true;
window.scrollByPages(1);
return;
} else if (keyName === 'E') {
gotoEnd = true;
window.scroll(document.documentElement.scrollLeft,document.documentElement.scrollHeight);
return;
} else if (keyName === 'Q') {
gotoHome = true;
window.scroll(document.documentElement.scrollLeft,0);
return;
}
}
browser.storage.local.get('sites').then( sites_query => {
let sites;
if (sites_query.hasOwnProperty('sites')) {
sites = sites_query['sites'].split(',');
} else if (sites_query.hasOwnProperty(0) && sites_query[0].hasOwnProperty('sites')) {
sites = sites_query[0]['sites'].split(',');
} else {
return;
}
let site_tag;
for (site in sites) {
let patt = new RegExp(sites[site]);
if (patt.test(document.location.host)) {
site_tag = sites[site];
break;
}
}
if (site_tag !== undefined) {
let tag = site_tag+(gotoNext?"#next":"#pre");
browser.storage.local.get(tag).then(result=>{
let ele;
if (result.hasOwnProperty(tag)) {
ele = result[tag];
} else if (result.hasOwnProperty(0) && result[0].hasOwnProperty(tag)) {
ele = result[0][tag];
} else {
return;
}
document.querySelector(ele).click();
}, error => {
console.log(`WASD Pager Error: ${error}`);
});
}
});
});
}, true);