dynamisch eingefuegte iframes als target fuer formular
Matthias Schöchle
- dhtml
Schoenen guten Tag an alle!
Ich poste zum ersten mal und hoffe, dass jemand mir helfen kann. Ich habe niergends eine Info gefunden.
Mein Problem:
Ich erstelle dynamisch verschiedene IFrames:
var newIFrame = document.createElement("IFRAME");
newIFrame.className = "IFrameCSS";
newIFrame.name = "ausgabe"+counter;
newIFrame.src = url;
document.getElementById("mydiv").appendChild(newIFrame);
anschließend sollen daten im Formuler an die verschiedenen dokumente in den IFrames geschickt werden. Dazu verwende ich folgenden Code, der beim Drücken eines Button ausgeführt wird:
function sendme()
{
myform.target = "ausgabe1";
myform.action = "tbl.php";
myform.submit();
myform.target = "ausgabe2";
myform.action = "errortbl.php";
myform.submit();
}
Das funktioniert aber nicht. Es werden immer neue Fenster geoeffnet.
Am Code von sendme liegt es nicht. Bei Hartkodierten IFrames funktioniert das senden.
Warum scheitert es bei den dynamischen IFrames und vor allem: was kann ich tun?
Vielen Dank schon im Voraus und viele Gruesse
Matthias
Hallo an alle!
Ich habe jetzt nach stundenlangem suchen doch was gefunden. Da die Loesung vielleicht auch andere interessiert, meine Ergebnisse:
Im IE geht das wohl wegen einem Bug nicht, dass dyn. eingefuegte IFrames als target ansprechbar sind.
Workaround:
Einen DIV-Container dynamisch erstellen und ueber innerHtml den Code als Text einfügen.
Das obige Bsp ändert sich wie folgt:
// dynamisch erstellen:
var htmlIFrame = "<iframe name='"+iframename+"' src='"+iframesrc+"' width='100%' height='100%'></iframe>";
var IFrameDiv = document.createElement("DIV");
IFrameDiv.className = "winIFrameDivCss";
IFrameDiv.ID = "winIFrameDiv"+winCount;
IFrameDiv.innerHTML = htmlIFrame;
document.getElementById("mydiv").appendChild(IFrameDiv);
Damit funktioniert es. Vielleicht muss man noch für mozilla was machen, aber ich muss eh noch die Div-Layer-Sache anpassen.
Schoenen Tag noch ...
Hi,
Ich habe jetzt nach stundenlangem suchen doch was gefunden. Da die Loesung vielleicht auch andere interessiert, meine Ergebnisse:
Super, daß Du das Ergebnis deiner Mühe hier noch gepostet hast! :-))
Gruß, Cybaer