Archiv verlassen und diese Seite im Standarddesign anzeigen : Wert aus showModalDialog() an Elternfenster
Trialrider
30.09.2003, 16:36:10
Hallo Leute,
ich hab da ein Problem mit JavaScript und besagtem Vorgang. Hat's von euch schonmal einer gemacht oder hinbekommen?
In groben Zügen sieht der zugrundeliegende Vorgang so aus:
User klickt auf Link => showModalDialog() öffnet eine Auswahlseite => Ausgewählter Wert wird beim schliessen oder per Submit() an das ursprüngliche Fenster zurückgegeben und in ein Feld geschrieben.
Würde mich über Hilfe sehr freuen.
Viele Grüße, Trialrider
Gweilo
30.09.2003, 16:50:43
versuch mal das hier:
opener.document.forms[0].elementname.value='wasauchimmer';
Trialrider
30.09.2003, 16:59:46
Danke, Gweilo. aber es bringt mir: "'opener.document' ist Null oder kein Objekt."
Habe ja den ganzen Tag schon unter anderem mit Suchen verbracht...
Hier mal meinJavascript für ein Dialog aus dem Hauptfenster "main": function bestellung_finden(sid)
{
window.name="basis";
var breit = 400;
var hoch = 400;
var max_breit = screen.width;
var max_hoch = screen.height;
var pos_links = (max_breit/2)-(breit/2);
var pos_oben = (max_hoch/2)-(hoch/2);
var f1 = window.showModalDialog("best_finden.php?s="+sid+"", "finder", "dialogWidth="+breit+",dialogHeight="+hoch+",status=1, resizable=1");
f1.focus();
} Denn mal noch viele Grüße,
Trialrider
P.S.: Ich probiers auch weiter...
Gweilo
30.09.2003, 18:20:18
der opener sollte schon irgendwie funktionnieren, denn für genau das ist er da.
window.opener.document.getElementById("sometext").value="bla";
window.opener.document.form1.message.value = "bla";
Das sollte eigentlich klappen, hatte "window."vergessen. wenn's trotzdem nicht klappt versuch mal einige möglichkeiten zu alert'en:
> alert(self.opener); // oder window.opener halt
> alert(self.opener.location.href);
> alert(self.opener.document);
> alert(self.opener.document.forms.length);
> alert(self.opener.document.formname);
> alert(self.opener.document.formname.elements.length);
> alert(self.opener.document.formname.fieldname);
> alert(self.opener.document.formname.fieldname.value);
Trialrider
01.10.2003, 08:20:46
Guten Morgen, Gweilo!
Danke für deine Hilfe. Wenn ich das Fenster mit "window.open(...)" öffne, klappt die Rückgabe des Wertes. Aber ich hätt's gern mit einem modalen Fenster gemacht. Da werd ich halt das Schliessen mit dem Senden verbinden...
Nochmals Danke...
Trialrider
Gweilo
01.10.2003, 09:27:42
Hi Trialrider,
Achsoo, ich dachte bei deinem Code ShowModalWindow sei eine funktion von dir, die einfach ein fenster öffnet, hatte nämlich noch nie was davon gehört (man lernt halt immer dazu). Habe mal dazu ein wenig gegoogelt und folgendes gefunden, was sehr vielversprechend ausschaut:
http://www.webmasterworld.com/forum21/6123.htm
Im Übrigen geht showmodalwindow() bloss in IE, aber das weisst du vermutlich schon.
Gruss,
Gweilo
Trialrider
02.10.2003, 10:36:05
Danke, Gweilo.
Habe es beim window.open() gelassen - auch wegen der mgl. verschiedenen Browsertypen...
Alles funzt bestens, und mit einem "ungezielten" Submit() wird die Variable auch gleich im Opener-Fenster weiterverwendet.
Danke, und Gruß
Trialrider
Trialrider
02.10.2003, 13:22:49
Hi Gweilo,
Nachtrag:
Um _einen_ Wert aus einem mittels "showModalDialog()" erzeugtem Fenster zurückzugeben, muss der Wert an "window.returnValue" übergeben werden ("window.returnValue = 'blabla'").
Im Elternfenster steht dann dieser Wert zur Verfügung. Habs so ausprobiert:
Elternskript: "alert(window.showModalDialog('seite.html');"
Childskript: "window.returnValue = 'test'";
Dies liefert nach dem Schließen des Fensters ein "alert('test');"
Wie es mit mehreren Variablen geht, habe ich noch nicht probiert...
MfG, Steffen
diver-network
02.10.2003, 14:09:46
Hi Steffen,
jetzt muß ich mich doch noch kurz in diesen Thread einmischen, sorry ;-)
Ich würde Dich und jeden anderen warnen, nur IE spezifische Funktionen zu verwenden, vor allem, wenn diese nicht sehr gebräuchlich sind.
Grund sind böse Erfahrungen, daß Funktionen nach aufspielen eines Sicherheitspatches für den IE6 auf einmal in bestimmten (!) Programm- Konstellationen nicht mehr funktionieren und dadurch eine Anwendung lahmlegen können.
Wir konnten dies zwar über Umwege beheben, aber z.B. M$ hat auch nach einem knappen Monat noch keine Erklärung für dieses Verhalten, geschweige denn einen Patch dazu.
Insofern: Möglichst allgemeine und browserübergreifende Funktionen verwenden, dann läufst Du auf der sicheren Seite.
HTH,
Andy
Trialrider
02.10.2003, 14:28:13
Sei gegrüßt,
Einwand akzeptiert mit dem Hinweis, dass es sich bei meinem letzten Post nur um einen Nachtrag zur showModalDialog-Funktion handelt. Es wird beim window.open() bleiben...
Schönes Wochenende und einen schönen Feiertag,
Steffen
P.S.: @Andy: An der DB-Front hat sich die Woche bis auf diesen Teil leider ncihts geändert, so ist dass nun mal wenn man nur zu zweit ist, hoffentlich hab ich nächste Woche wieder mehr Zeit dazu zur Verfügung. Zum Buch noch: Dafür dass wir in der Schule die DB-Sachen usw. nur gestreichelt haben, ist es erstmal schwer verdaulich, doch so langsam kommt das Licht ;-)
So long...
diver-network
02.10.2003, 14:49:41
Hi Steffen,
ich weiß, mein Hinweis war auch als Warnung für andere gedacht. Das Problem besteht bei uns immer noch und hat die Auslieferung des IE6 auf einigen tausend PCs ziemlich verschoben ;-)
Dir auch ein schönes Wochenende und toi toi toi mit der DB und dem Buch, bei Problemen hast Du ja meine Email- Adresse bzw. weist, wo Du mich finden kannst. Im Forum allerdings erst wieder am Montag,
Schönes Wochenende,
Andy
vBulletin® v3.8.3, Copyright ©2000-2013, Jelsoft Enterprises Ltd.