Assainir une URL avec JavaScript

Concept et utilisation

La fonction urlSanitize() permet d'assainir une URL et ses paramètres de requêtes.

Fonction

urlSanitize()

Retourne une URL après l'avoir nettoyée selon les options spécifiées.

Syntaxe
urlSanitize(options);
Paramètre
options(Object)

Le paramètre options de la fonction urlSanitize() définit les éléments de l'URL à nettoyer.

Propriétés
url(String)

La propriété url du paramètre options définit l'URL à assainir.
Si cette propriété est omise, l'URL de la page affichée sera utilisée par défaut.

queriesWhitelist(Array)

La propriété queriesWhitelist du paramètre options définit la liste des paramètres de requêtes autorisés dans l'URL.
Si cette propriété est omise, tous les paramètres de requête seront conservés.

keepHash(Boolean)

La propriété keepHash du paramètre options définit avec une valeur booléenne si le hash de l'URL doit être conservé ou non.
Si cette propriété est omise, le hash ne sera pas conservé.

Exemple de nettoyage d'URL

var options = {
  url: 'https://www.domain.ext/?cle_1=valeur_1&cle_2=valeur_2#hash',
  queriesWhitelist: [ 'cle_1' ],
  keepHash: false
};

urlSanitize(options);

// renvoie : 'https://www.domain.ext/?cle_1=valeur_1'

Code source de la fonction

function urlSanitize(o) {
  o = o || {};
  var a = o.queriesWhitelist || [],
    p = (o.url || window.location.href).split(/\#/),
    h = (o.keepHash && p[1]) ? '#' + p[1] : '',
    q = '';
  p = p[0].split(/\?/);
  if (p[1]) {
    var r = p[1].split(/\&/);
    if (typeof r[0] === 'string') {
      for (var i = 0, j = r.length; i < j; i++) {
        var s = r[i].split(/\=/);
        for (var k = 0, l = a.length; k < l; k++) {
          if (s[0] === a[k]) {
            q += ((q !== '') ? '&' : '?') + s[0] + '=' + s[1];
          }
        }
      }
    }
  }
  return p[0] + q + h;
}
^