-
Notifications
You must be signed in to change notification settings - Fork 0
/
popup.js
137 lines (103 loc) · 5.74 KB
/
popup.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// # ============================================================== ¤ when the DOM is loaded
document.addEventListener('DOMContentLoaded', function () {
// set focus to input text
// document.getElementById('keyword').value = "dépoussiérer"; //●
document.getElementById('keyword').focus()
document.body.addEventListener('keydown', function (e) {
// if (e.altKey || e.ctrlKey || e.shiftKey) {
if (e.key == "Enter") {
chercher();
}
});
// # ------------------------------------------------------ ¤¤ get selected text on page
// https://stackoverflow.com/questions/19164474/chrome-extension-get-selected-text
// https://stackoverflow.com/questions/4996194/chrome-tabs-executescript-not-working?answertab=active#tab-top
chrome.tabs.executeScript({
code: "window.getSelection().toString();"
}, function (selection) {
//if there is a selected text, start the translate, otherwise wait for text in input
if (!(typeof selection === 'undefined' || selection === null)) {
document.getElementById('keyword').value = selection
chercher();
}
});
// # ------------------------------------------------------ ¤¤ add function to button translate
var buttonchercher = document.getElementById('buttonchercher');
buttonchercher.addEventListener('click', function () {
chercher();
}, false);
}, false); // # ============================================================== ¤ end DOM loaded (document.addEventListener('DOMContentLoaded') )
// # ------------------------------------------------------ ¤¤ chercher (called by button/enter)
function chercher() {
// remove the text of the div that indicate which
var keyword = document.getElementById('keyword').value;
// alert(keyword);
// if source text isn't empty
if (!(keyword == "")) {
// #......................................¤¤¤ ★ google API
// https://clients5.google.com/translate_a/t?client=dict-chrome-ex&sl=en&tl=fr&dt=t&q=father
var urls = [
["https://www.cnrtl.fr/morphologie/" + keyword, "vtoolbar", "morf_sound"], //best for plural
// ["https://www.cnrtl.fr/etymologie/" + keyword, "vitemselected"],
["https://www.cnrtl.fr/synonymie/" + keyword, "syno_format"],
// ["https://crisco2.unicaen.fr/des/synonymes/" + keyword, "synonymes"] //https://crisco2.unicaen.fr/des/synonymes/dépoussiérer - difficult to retrieve because no id
]
// for test set keyword to any of this word : hibou, tribal, aller, lancer
var resultdiv = document.getElementById("result")
resultdiv.innerText = "requete en cours";
var results = [];
var errors = [];
urls.forEach((item, index) => {
// alert(url1)
var http = new XMLHttpRequest();
// when readyState change this function is called
// readyState = 0 = UNSENT / 1 OPENED / 2 HEADERS_RECEIVED / 3 LOADING / 4 DONE
http.onreadystatechange = function () {
if (http.readyState == 4 && http.status == 200) {
parser = new DOMParser();
var ulr1response = parser.parseFromString(http.responseText, "text/html");
if (index == 0) {
// if url = etymologie
// var form = ulr1response.getElementById(item[1]).innerText
// results.push([form]);
// if url = morphologie
var form = ulr1response.getElementById(item[1]).getElementsByTagName("li")
var allresult = [];
for (i = 0; i < form.length; i++) {
if (!form[i].innerText.includes("verbe")) {
var response = ulr1response.getElementsByClassName(item[2])
for (i = 0; i < response.length; i++) {
allresult.push(response[i].innerText)
}
} else {
allresult.push(form[i].innerText)
}
}
results.push(allresult);
} else if (index == 1) {
var response = ulr1response.getElementsByClassName(item[1]);
var allresult = [];
for (i = 0; i < response.length; i++) {
allresult.push(response[i].innerText)
}
// alert(allresult)
results.push(allresult);
}
// update the DOM
// results[1].join is not a function at XMLHttpRequest.http.onreadystatechange
// Cannot read property 'join' of undefined at XMLHttpRequest.http.onreadystatechange
if (results[1] == "") {
resultdiv.innerHTML = results[0].join(", ") + "</br></br>Pas de synonymes trouvés"
} else {
resultdiv.innerHTML = "<b>" + results[0].join(", ") + "</br></br>Synonymes:</b></br>● " + results[1].join('</br>● ')
}
} else {
errors.push(index);
resultdiv.innerText = "Erreur: " + index + " " + http.readyState + " " + http.status;
}
}
http.open("GET", item[0], false);
http.send(null); // null = no parameters
});
}
};