Hier ist ein sehr überstürzter Proof of Concept.
Ich bin mir sicher, dass es mindestens zwei Stellen gibt, an denen Verbesserungen möglich sind, und ich bin mir auch sicher, dass dies in freier Wildbahn nicht lange überleben würde. Jedes Feedback, um es präsentabler oder benutzerfreundlicher zu machen, ist willkommen.
Der Schlüssel ist das Festlegen einer ID für Ihr Skriptelement. Der einzige Haken ist, dass Sie das Skript nur einmal aufrufen können, da es nach dieser ID sucht, um die Abfragezeichenfolge abzurufen. Dies könnte behoben werden, wenn das Skript stattdessen alle Abfrageelemente durchläuft, um festzustellen, ob eines von ihnen darauf verweist, und wenn ja, die letzte Instanz eines solchen Skriptelements verwendet. Wie auch immer, weiter mit dem Code:
Skript wird aufgerufen:
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;
};
Skript über folgende Seite aufgerufen:
<script id="myScript" type="text/javascript"
src="test.js?header=Test Page&text=This Works"></script>
<h1 id="docTitle"></h1>
<p id="docText"></p>