-
Notifications
You must be signed in to change notification settings - Fork 4
/
BibTexCopy.user.js
48 lines (45 loc) · 1.42 KB
/
BibTexCopy.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
// ==UserScript==
// @name BibTexCopy
// @namespace Yr
// @version 1.0
// @description Copy BibTex citation on google scholar
// @author yanagiragi
// @match https://scholar.google.com/scholar?*
// @grant GM_xmlhttpRequest
// @grant GM_setClipboard
// ==/UserScript==
(function () {
'use strict';
const citeBtns = [...document.querySelectorAll('.gs_or_svg')];
const handler = (event) => {
let x = null;
const findX = () => {
console.log([...document.querySelectorAll('a.gs_citi')][0].href)
const btns = [...document.querySelectorAll('a.gs_citi')];
x = btns[0];
if (!x) {
setTimeout(findX, 500);
} else {
const href = x.href;
GM_xmlhttpRequest({
method: "GET",
url: href,
onload: function (response) {
x.onclick = (event) => {
GM_setClipboard(response.responseText, "text");
console.log(response.responseText);
event.preventDefault();
}
}
})
}
}
setTimeout(findX, 500);
console.log('click')
};
citeBtns.map(x => {
x.onclick = () => {
setTimeout(handler, 100);
}
});
})();