Mercurial > ec-userscripts
annotate discord-disable-menu-on-links.user.js @ 147:15ec4ec958d7 default tip
Sentence case name and match filename (sort of)
author | nanaya <me@nanaya.net> |
---|---|
date | Sat, 27 Sep 2025 15:06:06 +0900 |
parents | |
children |
rev | line source |
---|---|
147
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
1 // ==UserScript== |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
2 // @name Discord disable menu on links |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
3 // @namespace https://nanaya.net |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
4 // @match https://discord.com/* |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
5 // @grant none |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
6 // @version 1.0.0 |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
7 // @author nanaya |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
8 // @description Disable custom context menu for external links in Discord |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
9 // @downloadURL https://hg.nanaya.net/ec-userscripts/raw-file/tip/discord-disable-menu-on-links.user.js |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
10 // ==/UserScript== |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
11 |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
12 function disableCustomContextMenu (e) { |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
13 e.stopPropagation(); |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
14 } |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
15 |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
16 function fix (link) { |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
17 if (!(link instanceof window.HTMLAnchorElement)) return; |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
18 if (link.rel.match(/\bnoopener\b/) == null && link.dataset.role !== 'img') return; |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
19 |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
20 if (link._ecDisableDiscordMenuOnLinks) return; |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
21 link._ecDisableDiscordMenuOnLinks = true; |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
22 link.addEventListener('contextmenu', disableCustomContextMenu); |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
23 } |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
24 |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
25 function run (nodes) { |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
26 nodes ??= [document.body]; |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
27 |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
28 for (const node of nodes) { |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
29 if (!(node instanceof window.HTMLElement)) continue; |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
30 fix(node); |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
31 for (const link of node.querySelectorAll('a[rel~=noopener], a[data-role=img]')) { |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
32 fix(link); |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
33 } |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
34 } |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
35 } |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
36 |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
37 function onMutate (mutations) { |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
38 for (const mutation of mutations) { |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
39 run(mutation.addedNodes); |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
40 } |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
41 } |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
42 |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
43 const observer = new window.MutationObserver(onMutate); |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
44 observer.observe(document, { childList: true, subtree: true }); |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
45 |
15ec4ec958d7
Sentence case name and match filename (sort of)
nanaya <me@nanaya.net>
parents:
diff
changeset
|
46 run(); |