Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: HarryB am 20.01.05 - 17:11:29

Titel: JavaScript im Internet Explorer
Beitrag von: HarryB am 20.01.05 - 17:11:29
Hi Folks,

ich werde noch ganz kirre...  >:(

Folgendes Script im JSHeader der Seite:

Zitat
var pForm = window.opener.document.forms[ 0 ];

function acceptResearcher() {
  var fullName = document.forms[ 0 ].$researcherFullName.value;
  pForm._researcherListBox.options[pForm._researcherListBox.options.length] = new Option(fullName,fullName);
  window.close();
}

Es handelt sich um einen Dialog, der von einem anderen Fenster aufgerufen wurde. Er zeigt eine Liste an, aus welcher der Benutzer einen Eintrag auswählen soll. $researcherFullName ist ein Feld bzw. input Element, das auch korrekt angezeigt und ausgewertet wird. Im Firefox funktioniert das Skript einwandfrei. Der Internet Explorer meldet mir immer einen Fehler in der Übergabezeile, in der eine neue Option angelegt wird (pForm._researcherListBox...).

Ich habe keine Ahnung, wieso in der Zeile ein Fehler gemeldet wird, obwohl im Firefox alles astrein läuft. Hat jemand vielleicht eine Idee, einen Hinweis dazu? Die Funktion muss leider zwingend im Internet Explorer laufen.

Viele Grüße
Harry
Titel: Re: JavaScript im Internet Explorer
Beitrag von: Thomator am 20.01.05 - 17:17:05
Hallo Harry,

ich denke mal, dass es an der Definition von pForm liegt.
'forms' liefert ja einen Array aller Forms im Dokument. Wenn nur eine Form da ist, kann der Firefox damit sicher umgehen, IE wohl nicht.

Probiers doch mal mit 'forms[0]'.

Thomas
Titel: Re: JavaScript im Internet Explorer
Beitrag von: HarryB am 20.01.05 - 17:20:45
@Thomas: Danke für den Hinweis, das scheint sich aber um einen Darstellungsfehler des Forums zu handeln. Ich habe bereits den Verweis auf forms so, wie du es vorschlägst.

Viele Grüße
Harry
Titel: Re: JavaScript im Internet Explorer
Beitrag von: Thomator am 20.01.05 - 17:30:33
Hallo Harry,

war wohl wirklich ein Fehler bei der Anzeige, jetzt sehe ich es auch...

Aber einen hab ich noch:

Versuch doch mal, das Feld nicht direkt über Form und Namen, sondern mit:

var field = document.getElementsByName("_researcherListBox")[0];

einzufangen. Das funktioniert meines Erachtens nach auch in allen Browsern und verursacht weniger Probleme...

Thomas
Titel: Re: JavaScript im Internet Explorer
Beitrag von: HarryB am 20.01.05 - 17:44:26
Dasselbe Phänomen: im Firefox gehts, im Internet Explorer nicht! Siehe Anhang.

Viele Grüße
Harry :-\

Titel: Re: JavaScript im Internet Explorer
Beitrag von: umi am 21.01.05 - 08:14:16
Errorhandling funktioniert auch in JS:
Versuch doch mal folgendes
Code
var pForm = window.opener.document.forms[ 0 ];

function acceptResearcher() {
try{
  var fullName = document.forms[ 0 ].$researcherFullName.value;
  pForm._researcherListBox.options[pForm._researcherListBox.options.length] = new Option(fullName,fullName);
  window.close();
}
catch(e) 
{
alert(e.description);
}
}
evtl. hilft dir das weiter
Titel: Re: JavaScript im Internet Explorer
Beitrag von: Thomator am 21.01.05 - 08:31:18
Hallo,

Das sieht eher nach einem Rechteproblem aus. Ist der URL für das neue Fenster komplett mit Protokollangabe und allem SchnickSchnack?

Thomas
Titel: Re: JavaScript im Internet Explorer
Beitrag von: HarryB am 21.01.05 - 10:30:20
Hallo,

Das sieht eher nach einem Rechteproblem aus. Ist der URL für das neue Fenster komplett mit Protokollangabe und allem SchnickSchnack?

Thomas
Nein, es waren immer nur relative Links. Der Browser sollte da aber http und den Schnickschnack selbst einsetzen.

Mit absoluten Links klappt es aber auch nicht.

Viele Grüße
Harry
Titel: Re: JavaScript im Internet Explorer
Beitrag von: Thomator am 21.01.05 - 10:40:38
Hi,

ich hatte auch mal so ein Problem, weil der URL mit Protokoll und so war, da wurde der Zugriff auf die öffnende Seite verweigert.

Wenn's aber nicht so ist...

Mich irritiert die Meldung 'Serverfehler' etwas. Wenn in Scripten ein Fehler kommt, wird normalerweise auch ein Scriptfehler angezeigt.

Kann es evtl. an einer Sicherheitseinstellung des Browsers liegen?

Thomas
Titel: Re: JavaScript im Internet Explorer
Beitrag von: HarryB am 21.01.05 - 10:51:23
Errorhandling funktioniert auch in JS:
Versuch doch mal folgendes
Code
var pForm = window.opener.document.forms[ 0 ];

function acceptResearcher() {
try{
  var fullName = document.forms[ 0 ].$researcherFullName.value;
  pForm._researcherListBox.options[pForm._researcherListBox.options.length] = new Option(fullName,fullName);
  window.close();
}
catch(e) 
{
alert(e.description);
}
}
evtl. hilft dir das weiter

Leider nein.  :-\
Titel: Re: JavaScript im Internet Explorer
Beitrag von: HarryB am 21.01.05 - 10:52:36
Kann es evtl. an einer Sicherheitseinstellung des Browsers liegen?

Thomas
Sollte nicht so sein. Ich hatte den Server mal als Vertrauenswürdige Seite eingetragen. Hat trotzdem nicht geklappt.  :-\

Viele Grüße
Harry
Titel: Re: JavaScript im Internet Explorer
Beitrag von: Thomator am 21.01.05 - 10:59:53
Hast Du das XP-Servicepack 2 installiert? Wenn mich nicht alles täuscht haben die da was mit Popups und Zugriffen auf andere Fenster gedreht...

Wenn ja, probier doch mal auf einem Rechner ohne. Und wenn es dort funzt weißt Du zumindest, wo Du ansetzen musst.

Thomas
Titel: Re: JavaScript im Internet Explorer
Beitrag von: HarryB am 21.01.05 - 11:08:42
Yo, ich habe XP2 installiert.

Tatsache ist, dass die DialogDemo von jnotes einwandfrei funktioniert. Dort wird auch auf andere Fenster zugegriffen.

Aber ich probiere es trotzdem mal ohne, auch wenn ich grad nicht weiss, wo ich so einen rechner auftreiben soll.

Nachtrag: hab's ausprobiert. Klappt nicht. :(

Viele Grüße
Harry
Titel: Re: JavaScript im Internet Explorer
Beitrag von: Thomator am 21.01.05 - 11:29:32
Tja, nun bin ich mit meinem Latein am Ende...
schnief!!   :'(
Titel: Re: JavaScript im Internet Explorer
Beitrag von: HarryB am 21.01.05 - 11:30:46
Hm, ich habe das ganze jetzt mal ausprobiert, indem ich den Ausgewählen Wert nicht als Option für eine Listbox neu erstelle, sondern einfach nur an ein Textfeld des übergeordneten Dokumentes übergebe. Das funktioniert. Das Problem ist also, dass ich keine Select Auswahl einer übergeordneten Instanz mit dem IE manipulieren kann. Das ist aber doof...

Viele Grüße
Harry
Titel: Re: JavaScript im Internet Explorer
Beitrag von: Thomator am 21.01.05 - 11:35:00
Ha,
Vorschlag:

Schreib die neuen Werte in ein verstecktes Feld im Orginaldokument, setzte ein flag (z.B. onReloadRefreshBox) oder so, löse aus dem Popup beim Schließen ein reload aus, und wenn der Flag gesetzt ist wird im onLoad des Original-Fensters die Auswahl befüllt.

Na, klingt das nach einem Ansatz??

Thomas
Titel: Re: JavaScript im Internet Explorer
Beitrag von: HarryB am 21.01.05 - 11:54:43
Yo, dieselbe Idee kam mir auch. Ich bin allerdings noch nicht ganz sicher, wo und wie ich den Reload auslösen kann/soll. Aber ich probiere mal rum.

Danke schon mal so weit.

Viele Grüße
Harry
Titel: Re: JavaScript im Internet Explorer
Beitrag von: Thomator am 21.01.05 - 13:27:52
Hallo Harry,

ein Reload ist glaub ich doch nicht so das Richtige, dann haut es Dir die zurückgeschriebenen Werte ja wieder weg.

Besser ist evtl. im onSubmit den flag abzufragen, die Funktion für das setzen der Options auszuführen und wenn der flag halt für das setOptions gesetzt ist, noch ein return false im onSubmit.

Dann wird das Formular auch nicht übertragen...

Das müßte allerdings auch im onReload funzen.

Thomas
Titel: Re: JavaScript im Internet Explorer
Beitrag von: HarryB am 21.01.05 - 14:47:50
Hi Folks,

jetzt habe ich doch eine funktionierende Alternative gefunden. Eigentlich ganz einfach, muss man nur drauf kommen...

Im Ausgangsdokument habe ich folgende Funktion definiert:
Zitat
function addAuthor(value) {
  var f = document.forms["_wAuthorlistDialog"];
  var s = f._researcherListBox;
  s.options[s.options.length] = new Option (value,value);
}

In der Dialogbox, in der die eigentliche Auswahl stattfindet greife ich so auf diese Funktion zu:
Zitat
window.opener.addAuthor(fullName);

Voilá! Funkitoniert in beiden Browsern! :D

Viele Grüße
Harry, dessen Wochenende gerettet ist! :D
Titel: Re: JavaScript im Internet Explorer
Beitrag von: Thomator am 21.01.05 - 15:17:20
Hi,

es war mir gar nicht bewußt, dass man auf Funktionen des Openers so einfach zugreifen kann.

Man lernt halt nie aus... :P

Thomas