Firefox: Header + javascript, doppelte Ausführung
DjNose
- browser
Hallo,
ich habe ein kleines Problem mit dem Firefox.
Und zwar geht es darum, dass es anscheinend eine Bug im Firefox gibt, oder ich es einfach nicht hinbekomme.
Hintergrund:
Application wurde auf Ajax umgestellt, Javascript muss teilweise extrahiert und ausführbar gemacht werden.
Das alles ist soweit kein Problem, hier aber ein kleines Beispiel, welches mich in den Wahnsinn treibt.
Vielleicht hat jemand von euch eine Idee:
<html>
<head>
<script type="text/javascript">
function doit(testText) {
var head = document.getElementsByTagName("head")[0];
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('id', 'jsAjax');
head.appendChild(script);
document.getElementById('jsAjax').text = 'alert("'+testText+'ich bin hier !! ola ...");';
};
</script>
</head>
<body>
<form>
<input type="button" onclick="doit('was geht?!');" value="Kom On, Klik misch"/>
</form>
</body>
</html>
Wenn ich auf den Knopf drücke, wird wie gewünscht eine Javascriptblock erzeugt, jedoch 2 mal ausgeführt und nicht nur einmal.
Im Internet Explorer funktioniert es.
Ideen?
Vielen Dank im Vorraus!!
Application wurde auf Ajax umgestellt, Javascript muss teilweise extrahiert und ausführbar gemacht werden.
Wenn ich auf den Knopf drücke, wird wie gewünscht eine Javascript-Block erzeugt, jedoch zweimal ausgeführt und nicht nur einmal.
Keine Lösung für diese Form Deines Problems, aber wenn es nur darum geht, nachträglich vom Server geholten Javascript-Code auszuführen, sollte sich das auch deutlich einfacher mit eval() (einmalige Ausführung) oder 'f = new Function([Argumente,] Code); f([Argumente]);' (mehrmalige Verwendung) erledigen lassen.
Deine Variante, im <head>-Bereich ein neues <script>-Element einzufügen, kommt mir etwas wie von hinten durch die Brust ins Auge vor.
Deine Variante, im <head>-Bereich ein neues <script>-Element einzufügen, kommt mir etwas wie von hinten durch die Brust ins Auge vor.
Ist nicht unbedingt falsch, aber leider nicht anders machbar.
eval wird immer nur in dem Context ausgeführt, wo es aufgerufen wird.
Hier handelt es sich um ein Popup, welches Code in dem Vaterfenster ausführen soll.
Sprich das Vaterfenster (window.opener) ansticheln soll, javascript code auszuführen.
Böse Zungen behaupten es sei nicht möglich, ist es aber :).
Noch weitere Ideen?
Danke !