Hallo zusammen,
ich habe ein Problem mit dem Ausführen von per Ajax nachgeladenem Javascript Code (einfach ein Alert). Im FF funktioniert das prima, aber der IE 7 macht gar nix. Ich verwende dazu folgende Funktion über die mehrmals im www berichtet wurde, dass dies funktionieren sollte:
execJS : function (node) {
var st = node.getElementsByTagName('SCRIPT');
var strExec;
var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
var bMoz = (navigator.appName == 'Netscape');
for(var i=0;i < st.length; i++) {
if (bSaf) {
strExec = st[i].innerHTML;
}
else if (bOpera) {
strExec = st[i].text;
}
else if (bMoz) {
strExec = st[i].textContent;
}
else {
strExec = st[i].text;
}
try {
eval(strExec);
} catch(e) {
alert(e);
}
}
},
Aufgerufen wird diese Funktion folgendermaßen:
function processAXAH(elementContainer){
if (theHttpRequest.readyState == 4)
{
if (theHttpRequest.status == 200) {
document.getElementById(elementContainer).innerHTML = theHttpRequest.responseText;
if (execJavaScriptAfterTransfer == true) { execJS(document.getElementById(elementContainer)); }
}
else
{ document.getElementById(elementContainer).innerHTML="Error! Fehler: " + theHttpRequest.statusText; }
}
}
Den restlichen Ajax-Krempl drumherum spare ich mal zwecks der Übersichtlichkeit aus. Dies funktioniert ja alles. Es gehr nur darum das Script nachträglich mit eval auszuführen.
Im Internet habe ich noch gefunden dass man angeblich für den IE per DOM erst wieder den Script Tag drumherum aufbauen müsste. Ungefähr so:
var newScript = document.createElement('script');
newScript.setAttribute('type','text/javascript');
newScript.setAttribute('src',url);
document.getElementById("script").appendChild(newScript);
Bin ich da auf dem richtigen Weg???
Leider kriege ich das aber trotz bestem Bemühen selbst nicht ans fliegen und google bringt zwar viele Treffer aber nichts wirklich ergiebiges. Ich weis aber das es gehen muss, da z.B. in Twobirds ja das auch irgendwie so gemacht wird.
Hat jemand eine Fundstelle wo wirklich nachvollziehbar erklärt wird wie das nun geht?
Oder hat jemand sogar eine auch mit IE funktionierende Funktion?
Bin für jeden Tip dankbar!
PS: Es geht mir darum auszuloten was man mit Ajax alles machen kann. Deshalb bitte keine Grundsatzdiskussion zur Sinnhaftigkeit von Ajax.
Vielen Dank im Voraus!
Moosi