Wie kann ich diese eval () erhalten ruft in IE zu arbeiten?
-
20-08-2019 - |
Frage
Ich habe einige Javascript, die aus und holt sich auf einer anderen Seite xhtml ein Javascript „Klasse“ geht. Die Fern Javascript sieht etwa wie folgt aus:
(function() {
this.init = function() {
jQuery("#__BALLOONS__tabs").tabs();
};
})
Danach wird geholt in this.javascript, ich versuche, es zu Evaluierungs- und instanziiert:
this.javascript = eval("(" + this.javascript + ")");
this.javascript = new this.javascript();
this.javascript.init();
Natürlich, das perfekt funktioniert in allen Browsern außer IE. In IE, scheitert es an der eval Linie. Hat jemand Vorschläge, wie ich diese Arbeit in IE machen oder eine Alternative.
Danke, Pete
Lösung
Haben Sie versucht:
eval("this.javascript = (" + this.javascript + ")");
...
Andere Tipps
Das funktionierte mit guten Browsern und schlechten (was bedeutet, das heißt):
var code_evaled;
function eval_global(codetoeval) {
if (window.execScript)
window.execScript('code_evaled = ' + '(' + codetoeval + ')',''); // execScript doesn’t return anything
else
code_evaled = eval(codetoeval);
return code_evaled;
}
Genießen
(eval ist kein Objekt Methode in IE). Also, was zu tun? Die Antwort stellt sich heraus, dass Sie eine proprietäre IE Methode window.execScript zu eval-Code verwenden können.
function loadMyFuncModule(var stufftoeval) {
var dj_global = this; // global scope reference
if (window.execScript) {
window.execScript("(" + stufftoeval + ")");
return null; // execScript doesn’t return anything
}
return dj_global.eval ? dj_global.eval(stufftoeval) : eval(stufftoeval);
}
Wenn Schlimmste wirklich am Mann ist, so etwas wie dies funktionieren kann:
var self = this;
funcid = "callback" + Math.random();
window[funcid] = function(javascript) {
delete window[funcid];
self.javascript = javascript;
self.javascript = new self.javascript();
self.javascript.init();
}
document.write("<script language='javascript'>" +
"window." + funcid + "(" +
"(" + this.javascript + "));" +
"</script>");
Ich hatte das gleiche Problem von eval () mit IE, und der Funktion mit „window.execScript“ nicht für mich gearbeitet. Die Lösung fand ich Arrays in Javascript bekommen von einer Seite (php in meinem Fall), war einige JSON zu verwenden.
// myfeed.php
return json_encode($myarray);
// myjs.js
$.getJSON('myfeed.php',function(data){dataAlreadyEvaled = data;});
Dies muss keine Funktion eval (), wenn es jemand hilft ...