« Module:MinecraftConnect » : différence entre les versions
De Nefald
Autres actions
m échappement |
mAucun résumé des modifications |
||
| Ligne 21 : | Ligne 21 : | ||
end | end | ||
-- Échappement pour JavaScript ( | -- Échappement manuel pour JavaScript | ||
local adresseJS = | local function jsEscape(str) | ||
return str:gsub("\\", "\\\\"):gsub("'", "\\'"):gsub('"', '\\"'):gsub("\n", "\\n") | |||
end | |||
local adresseJS = jsEscape(adresseComplete) | |||
local texteHTML = mw.text.encode(texte) | local texteHTML = mw.text.encode(texte) | ||
-- Génération d'un ID unique pour éviter les conflits | -- Génération d'un ID unique pour éviter les conflits | ||
local uniqueId = 'mc-btn-' .. | local uniqueId = 'mc-btn-' .. server:gsub('[^%w]', '-') | ||
-- HTML du bouton | -- HTML du bouton | ||
| Ligne 37 : | Ligne 41 : | ||
:attr('title', 'Cliquer pour copier : ' .. mw.text.encode(adresseComplete)) | :attr('title', 'Cliquer pour copier : ' .. mw.text.encode(adresseComplete)) | ||
:attr('data-server', adresseComplete) | :attr('data-server', adresseComplete) | ||
:wikitext(texteHTML .. ' 📋') | :wikitext(texteHTML .. ' 📋') | ||
:done() | :done() | ||
-- JavaScript pour la copie dans le presse-papier | -- JavaScript pour la copie dans le presse-papier | ||
local jsCode = | local jsCode = [[ | ||
(function() { | (function() { | ||
var btn = document.getElementById( | var btn = document.getElementById(']] .. uniqueId .. [[').querySelector('button'); | ||
if (!btn) return; | if (!btn) return; | ||
btn.addEventListener('click', function() { | btn.addEventListener('click', function() { | ||
var adresse = | var adresse = ']] .. adresseJS .. [['; | ||
if (navigator.clipboard && window.isSecureContext) { | if (navigator.clipboard && window.isSecureContext) { | ||
| Ligne 103 : | Ligne 107 : | ||
} | } | ||
})(); | })(); | ||
]] | ]] | ||
local script = mw.html.create('script'):wikitext(jsCode) | local script = mw.html.create('script'):wikitext(jsCode) | ||