From 067ec55f13bd472c8d584d8e26d70a34cc9705f3 Mon Sep 17 00:00:00 2001 From: polo Date: Sat, 1 Nov 2025 19:20:15 +0100 Subject: =?UTF-8?q?contr=C3=B4le=20sur=20les=20input=20type=20url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/js/Input.js | 4 ++-- public/js/main.js | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'public/js') diff --git a/public/js/Input.js b/public/js/Input.js index 0ebbbbb..854e5d1 100644 --- a/public/js/Input.js +++ b/public/js/Input.js @@ -11,7 +11,7 @@ class InputToggler{ this.submit_elem = this.parent.querySelector(options.submit_selector || `#${name}_submit`); this.cancel_elem = this.parent.querySelector(options.cancel_selector || `#${name}_cancel`); - // balises à ne pas gérer (fonctionne mais inutilisé pour l'instant) + // balises à ne pas gérer this.ignored_tags = { has_content: options.has_content !== false, // => true sauf si le paramètre vaut false has_input: options.has_input !== false, @@ -42,7 +42,7 @@ class InputToggler{ // enfants -class InputText extends InputToggler{ +class InputText extends InputToggler{ // pour input type text ou url constructor(name, options = {}){ super(name, options); this.fetcher = new Fetcher({ diff --git a/public/js/main.js b/public/js/main.js index 42bae70..1e47ebe 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -36,6 +36,18 @@ function toastNotify(message){ setTimeout(function(){ toast.className = toast.className.replace('show', ''); }, 5000); } +function controlURL(input){ + const url = input.value.trim(); + if(!url){ + return; + } + if(/^[a-z][a-z0-9+.-]*:/i.test(url) // un "protocole" (https://, ftp://, mailto:, etc) + || url.startsWith('/') || url.startsWith('./') || url.startsWith('../')){ // Lien local (commence par /, ./ ou ../) + return; + } + input.value = 'https://' + url; // Cas par défaut +} + // exécuté à la fin du chargement de la page document.addEventListener('DOMContentLoaded', () => { -- cgit v1.2.3