-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
29 lines (28 loc) · 990 Bytes
/
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
var pending = false; // global
document.addEventListener('keydown', async function(event) {
if (event.keyCode === 9 && !pending) {
const srcElement = event.srcElement;
if(['INPUT', 'TEXTAREA'].indexOf(srcElement.tagName) <= -1 && !srcElement.hasAttribute("contenteditable")) {
return;
}
const isInput = ['INPUT', 'TEXTAREA'].indexOf(srcElement.tagName) > -1;
const value = (isInput ? srcElement.value : srcElement.textContent).trim();
if(!value) {
return;
}
event.preventDefault();
pending = true;
if(isInput) {
srcElement.value += '...';
} else {
srcElement.textContent += '...';
}
const res = await chrome.runtime.sendMessage({'text':value});
if(isInput) {
srcElement.value = srcElement.value.substring(0, srcElement.value.length - 3) + res;
} else {
srcElement.textContent = srcElement.textContent.substring(0, srcElement.textContent.length - 3) + res;
}
pending = false;
}
});