AS Josh Stodola zur Laufzeit die Erstellung der Variable erwähnt ist nicht das Problem
var holdsWidgetUUID = "widgetUUIDValue";
eval(holdsWidgetUUID + "= (" + data + ")");
alert(eval(holdsWidgetUUID));
Oder wenn Sie bevorzugen
var UUID = "widgetUUID";
var holdsWidgetUUID = "widgetUUIDValue";
window["widgets"] = new Array();
window["widgets"][holdsWidgetUUID] = data;
alert(window["widgets"][holdsWidgetUUID]);
Das Problem das geladene JavaScript ist immer ein wie dynamicvariablename.methodname aufrufbar zu arbeiten sein()
ich eine funktionierende Lösung, wenn Sie eine bestimmte Codierung der Praxis auf dem im Lieferumfang enthaltenen Javascript erzwingen. Vielleicht bringt dich das in die richtige Richtung.
Dies ist ein Widgets Javascript (works.js). Beachten Sie, dass es sich um eine Javascript- "Klasse" mit intern definierten Feldern und Methoden handelt. Welche von selbst hält Namespace Verschmutzung gering und ermöglicht es uns, die die gewünschte Form Aufruf x.getInfo erreichen()
function() {
this.type = 1;
this.color = "red";
this.getInfo = function() {
return this.color + ' ' + this.type + ' widget';
};
}
Und das ist die Datei, die zur Laufzeit in einem Namespace
<html>
<head>
<title>Widget Magic?</title>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
var UUID = "widgetUUID";
var holdsWidgetUUID = "widgetUUIDValue";
window["widgets"] = new Array();
$.get("works.js", function(data) {
window["widgets"][holdsWidgetUUID] = eval("(" + data + ")");
$(document).ready(function() {
window["widgets"][holdsWidgetUUID] = new (window["widgets"][holdsWidgetUUID])();
alert(window["widgets"][holdsWidgetUUID].color);
alert(window["widgets"][holdsWidgetUUID].getInfo());
});
});
</script>
</head>
<body>
<p>Just some stuff</p>
</body>
</html>
Diese Erklärung hat mir enorm geholfen, danke! Diese Methode ist großartig für mich, da ich die Widget-API angeben kann. – slypete