Voici une preuve de concept très rapide.
Je suis sûr qu'il y a au moins deux endroits où des améliorations peuvent être apportées, et je suis également sûr que cela ne survivrait pas longtemps dans la nature. Tout commentaire pour le rendre plus présentable ou utilisable est le bienvenu.
La clé est de définir un id pour votre élément script. Le seul hic est que cela signifie que vous ne pouvez appeler le script qu'une seule fois puisqu'il recherche cet ID pour tirer la chaîne de requête. Cela pourrait être corrigé si, au lieu de cela, le script boucle à travers tous les éléments de requête pour voir si l'un d'entre eux pointe vers lui, et si oui, utilise la dernière instance d'un tel élément script. Bref, passons au code :
script en cours d'appel :
window.onload = function() {
//Notice that both possible parameters are pre-defined.
//Which is probably not required if using proper object notation
//in query string, or if variable-variables are possible in js.
var header;
var text;
//script gets the src attribute based on ID of page's script element:
var requestURL = document.getElementById("myScript").getAttribute("src");
//next use substring() to get querystring part of src
var queryString = requestURL.substring(requestURL.indexOf("?") + 1, requestURL.length);
//Next split the querystring into array
var params = queryString.split("&");
//Next loop through params
for(var i = 0; i < params.length; i++){
var name = params[i].substring(0,params[i].indexOf("="));
var value = params[i].substring(params[i].indexOf("=") + 1, params[i].length);
//Test if value is a number. If not, wrap value with quotes:
if(isNaN(parseInt(value))) {
params[i] = params[i].replace(value, "'" + value + "'");
}
// Finally, use eval to set values of pre-defined variables:
eval(params[i]);
}
//Output to test that it worked:
document.getElementById("docTitle").innerHTML = header;
document.getElementById("docText").innerHTML = text;
};
script appelé par la page suivante :
<script id="myScript" type="text/javascript"
src="test.js?header=Test Page&text=This Works"></script>
<h1 id="docTitle"></h1>
<p id="docText"></p>