Il s'agit d'un très vieux fil de discussion, je le sais, mais cela pourrait également aider si quelqu'un arrive ici une fois qu'il a cherché une solution.
En fait, j'ai utilisé document.currentScript pour obtenir l'élément à partir duquel mon code est exécuté et j'ai filtré en utilisant le nom de la variable que je recherche. J'ai étendu currentScript avec une méthode appelée "get", de sorte que nous serons en mesure de récupérer la valeur à l'intérieur de ce script en utilisant :
document.currentScript.get('get_variable_name');
De cette manière, nous pouvons utiliser un URI standard pour récupérer les variables sans ajouter d'attributs spéciaux.
Voici le code final
document.currentScript.get = function(variable) {
if(variable=(new RegExp('[?&]'+encodeURIComponent(variable)+'=([^&]*)')).exec(this.src))
return decodeURIComponent(variable[1]);
};
J'avais oublié IE :) On ne peut pas faire plus simple... Je n'ai pas mentionné que document.currentScript est une propriété HTML5. Elle n'a pas été incluse pour les différentes versions d'IE (j'ai testé jusqu'à IE11, et elle n'était pas encore là). Pour la compatibilité avec IE, j'ai ajouté cette partie au code :
document.currentScript = document.currentScript || (function() {
var scripts = document.getElementsByTagName('script');
return scripts[scripts.length - 1];
})();
Ce que nous faisons ici, c'est définir un code alternatif pour IE, qui renvoie l'objet script actuel, qui est nécessaire dans la solution pour extraire les paramètres de la propriété src. Il ne s'agit pas d'une solution parfaite pour IE, car il existe certaines limitations : si l'objet script est chargé de manière asynchrone, les navigateurs plus récents doivent inclure ".htm" dans le code. Les navigateurs plus récents doivent inclure la propriété ".currentScript".
J'espère que cela vous aidera.