-
Notifications
You must be signed in to change notification settings - Fork 1
/
question.js
82 lines (76 loc) · 2.4 KB
/
question.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
/*
* 2017-03-04
* 启用问题页面复制功能,问题页文字大小调整
* Copyright (c) 2017 aopod (http://www.aopod.com)
*/
(function() {
let url = window.location.href;
let listClass = url.indexOf('/answer/') > -1 ? 'div.Question-mainColumn' : 'div.List-item';
let first_list_item = document.querySelector(listClass);
let list_items_container = first_list_item ? first_list_item.parentElement : null;
document.body.addEventListener('keyup', function(e) {
var custom_style_sheet_id = 'aopod_zhihu_extension_style_sheet_id';
var custom_style_sheet = document.getElementById(custom_style_sheet_id);
if (!custom_style_sheet) {
custom_style_sheet = document.createElement('style');
custom_style_sheet.id = custom_style_sheet_id;
custom_style_sheet.type = 'text/css';
document.head.appendChild(custom_style_sheet);
}
var base_element = document.getElementsByClassName('RichContent')[0];
var active_element = document.activeElement;
if (active_element) {
var nodeName = active_element.nodeName;
if (nodeName === 'INPUT' || nodeName === 'TEXTAREA') {
return;
}
}
var target_font_size = -1;
var current_font_size = parseInt(window.getComputedStyle(base_element).fontSize);
switch(e.keyCode) {
case 48: // 0
break;
case 189: // -
if (current_font_size > 10) {
target_font_size = current_font_size - 1;
} else {
target_font_size = 10;
}
break;
case 187: // =
if (current_font_size < 30) {
target_font_size = current_font_size + 1;
} else {
target_font_size = 30;
}
break;
default:
return;
}
if (target_font_size >= 10) {
custom_style_sheet.innerHTML = '.RichContent {font-size: ' + target_font_size + 'px; line-height: 1.8em;}';
} else {
custom_style_sheet.innerHTML = '';
}
});
if (list_items_container == null) {
return;
}
list_items_container.addEventListener('copy', function(e) {
console.log('asdf:');
var target = e.target;
if (target.nodeName === 'SPAN' && target.className.indexOf('CopyrightRichText-richText') > -1) {
return;
}
e.stopImmediatePropagation();
var parent = target;
while ((parent = parent.parentElement) && parent.nodeName !== 'DIV') {
if (parent.nodeName === 'SPAN' && parent.className.indexOf('CopyrightRichText-richText') > -1) {
var t = parent;
setTimeout(function() {
t.dispatchEvent(new Event('copy', e));
}, 0);
}
}
}, false);
})();