PopUp-Fenster
alfie
- javascript
Hallo!
Ich habe versucht, ein PopUp als direkten Link (a href="JavaScript:..., will ich nicht verwenden, nur zum Testen!) und als onclick-event (a href="xyz.jpg" target="_blank"
onclick="JavaScript:...) aufzurufen. Eine Testseite gibt's unter
http://langtest.maloer.org/index.htm
Der externer Skript:
view-source:http://langtest.maloer.org/popup.js
getestet unter W2K, jeweils IE6, Navigator4.75, Mozilla1.4, Opera7.22 und Amaya8.2
IE6 öffnet mit aktivem Skripting das PopUp und schliesst es nach 10 Sekunden wieder, ohne Skripting funktioniert der Link (normales Browserfenster)
Nav4.75, Mozilla1.4, Opera7.22 öffnen das PopUp *und* ein normales Fenster, das PopUp bleibt offen (Mozilla zeigt eine laufende Sanduhr)
Mozilla1.4, Opera7,22 ohne JavaScript öffnen das normale Fenster
Amaya8.2 öffnet das normale Fenster
die JavaScript-Konsole im Mozilla zeigt eine Info und ein [X] an:
Info: Sicherheitsfehler: Inhalt auf http://langtest.maloer.org/index.htm darf keine Daten von about:blank laden.
[X]: Fehler: fenster.document.focus is not a function
Quelldatei: http://langtest.maloer.org/popup.js
Zeile: 13
Vermutlich ein trivialer Fehler, aber irgendwie bin ich heute wohl blind ;-)
mfg Alfie
Hallo alfie,
Ich habe versucht, ein PopUp als direkten Link (a href="JavaScript:..., will ich nicht verwenden, nur zum Testen!) und als onclick-event (a href="xyz.jpg" target="_blank"
onclick="JavaScript:...) aufzurufen.
Javascript hat in einem Eventhandler nichts verloren. [onClick="deinefunktion();"]
IE6 öffnet mit aktivem Skripting das PopUp und schliesst es nach 10 Sekunden wieder, ohne Skripting funktioniert der Link (normales Browserfenster)
Wenn der IE etwas macht, heisst das noch lange nicht, dass das richtig ist.
Nav4.75, Mozilla1.4, Opera7.22 öffnen das PopUp *und* ein normales Fenster,
Klar, weil du es ja explizit so angeordnet hast. Wenn du die Ursprungsseie unverändert lassen möchtest, füge ein return false; hinzu.
das PopUp bleibt offen (Mozilla zeigt eine laufende Sanduhr)
Auch logisch,, da die ausführung aufgrund eines Scriptfehlers abgebrochen wird.
die JavaScript-Konsole im Mozilla zeigt eine Info und ein [X] an:
Info: Sicherheitsfehler: Inhalt auf http://langtest.maloer.org/index.htm darf keine Daten von about:blank laden.
[X]: Fehler: fenster.document.focus is not a function
Quelldatei: http://langtest.maloer.org/popup.js
Zeile: 13
»
Wie wäre es mit 'fenster.focus();'?
Focus ist in diesem Fall eine Methode des Window Objekts.
Gruß
Kurt
Hallo Kurt!
Javascript hat in einem Eventhandler nichts verloren. [onClick="deinefunktion();"]
Ach was? http://selfhtml.teamone.de/html/referenz/attribute.htm#universalattribute
Attribut: onclick
Bedeutung: beim Anklicken des Elements... (Script-Code)
oder auch
http://selfhtml.teamone.de/javascript/sprache/eventhandler.htm#allgemeines
Event-Handler (Ereignis-Behandler) sind ein wichtiges Bindeglied zwischen HTML und JavaScript. [...]
Event-Handler erkennen Sie daran, dass solche HTML-Attribute immer mit on beginnen, zum Beispiel onClick=. Hinter dem Istgleichzeichen notieren Sie - in Anführungszeichen, eine JavaScript-Anweisung. [...]
onClick (beim Anklicken)
Nach HTML 4.0 erlaubt in folgenden HTML-Tags:
<a>....
IE6 öffnet mit aktivem Skripting das PopUp und schliesst es nach 10 Sekunden wieder, ohne Skripting funktioniert der Link (normales Browserfenster)
Wenn der IE etwas macht, heisst das noch lange nicht, dass das richtig ist.
Na schön, zufällig ist das aber genau das Verhalten, dass ich mir vorstelle:
Ohne JavaScript öffnet das Bild in einem normalen Browserfenster, mit JavaScript in einem PopUp und schliesst automatisch nach x Sekunden wieder.
Nav4.75, Mozilla1.4, Opera7.22 öffnen das PopUp *und* ein normales Fenster,
Klar, weil du es ja explizit so angeordnet hast. Wenn du die Ursprungsseie unverändert lassen möchtest, füge ein return false; hinzu.
Habe ich nicht. Wenn du den Skript-Code angesehen hättest, würdest du wohl gesehen haben, dass "return false;" bereits vorhanden ist.
Wie wäre es mit 'fenster.focus();'?
Focus ist in diesem Fall eine Methode des Window Objekts.
Damit funktioniert es in keinem Browser mehr....
mfg Alfie
Hallo alfie,
Javascript hat in einem Eventhandler nichts verloren. [onClick="deinefunktion();"]
Ach was? http://selfhtml.teamone.de/html/referenz/attribute.htm#universalattribute
Attribut: onclick
Bedeutung: beim Anklicken des Elements... (Script-Code)
oder auch
[....]
Ich hätte wohl "Javascript" in Anführungszeichen setzen sollen. Meine Aussage sollte nicht dahingehend interpretiert werden, das Javascript als Scriptsprache nicht zulässig wäre, sondern daß der Aufruf"javascript:" mehr als deplaziert ist, da dem Browser im Falle eines Eventhandlers nicht auch noch extra mitgeteilt werden muss, daß nun Javascript folgt, da er das sowieso erwartet.
IE6 öffnet mit aktivem Skripting das PopUp und schliesst es nach 10 Sekunden wieder, ohne Skripting funktioniert der Link (normales Browserfenster)
Wenn der IE etwas macht, heisst das noch lange nicht, dass das richtig ist.
Na schön, zufällig ist das aber genau das Verhalten, dass ich mir vorstelle:
Ohne JavaScript öffnet das Bild in einem normalen Browserfenster, mit JavaScript in einem PopUp und schliesst automatisch nach x Sekunden wieder.
Habe ich mit einem Wort dagegen etwas gesagt?
Niemals, denn imho ist das die einzig wahre Lösung, Links mit Javascript zu behandeln. Meine Aussage bezog sich viel eher darauf, daß der Code noch lange nicht korrekt sein muss, wenn er vom IE auch ausgeführt wird.
Nav4.75, Mozilla1.4, Opera7.22 öffnen das PopUp *und* ein normales Fenster,
Klar, weil du es ja explizit so angeordnet hast. Wenn du die Ursprungsseie unverändert lassen möchtest, füge ein return false; hinzu.
Habe ich nicht. Wenn du den Skript-Code angesehen hättest, würdest du wohl gesehen haben, dass "return false;" bereits vorhanden ist.
Der Scriptcode ist in diesem Fall nicht relevant sondern der Quellcode des Links.
Wie wäre es mit 'fenster.focus();'?
Focus ist in diesem Fall eine Methode des Window Objekts.Damit funktioniert es in keinem Browser mehr....
Das Fenster, das du mit window open geöffnet hast, wird in der Variablen "fenster" gespeichert und nicht im document. Folglich solltest du es auch dort ansprechen.
Ich muss dir ehrlich sagen, nach dem Rotz den du hier abgelassen hast, ist meine Lust, dein Script zu sezieren, auf dem Nullpunkt angelangt. Du solltest zuallererst an deinem Ton arbeiten, bevor du erwartest, daß sich andere deinen Kopf zerbrechen.
Gruß
Kurt
Hallo Kurt!
[...]. Wenn du die Ursprungsseie unverändert lassen möchtest, füge ein return false; hinzu.
[...] Wenn du den Skript-Code angesehen hättest, würdest du wohl gesehen haben, dass "return false;" bereits vorhanden ist.
Der Scriptcode ist in diesem Fall nicht relevant sondern der Quellcode des Links.
ok. Falsche Terminologie.
Auszug aus dem Quellcode:
<a href="big.jpg" target="_blank"
onclick="JavaScript:popup('big.jpg', 320, 240, 'grosses Bild', 'black', 5, 'das Schild');return false;
Wie wäre es mit 'fenster.focus();'?
Focus ist in diesem Fall eine Methode des Window Objekts.Damit funktioniert es in keinem Browser mehr....
Das Fenster, das du mit window open geöffnet hast, wird in der Variablen "fenster" gespeichert und nicht im document. Folglich solltest du es auch dort ansprechen.
Ich muss dir ehrlich sagen, nach dem Rotz den du hier abgelassen hast, ist meine Lust, dein Script zu sezieren, auf dem Nullpunkt angelangt. Du solltest zuallererst an deinem Ton arbeiten, bevor du erwartest, daß sich andere deinen Kopf zerbrechen.
Dankeschön, mea culpa.
mfg Alfie
Hallo.
Ich hätte wohl "Javascript" in Anführungszeichen setzen sollen. Meine Aussage sollte nicht dahingehend interpretiert werden, das Javascript als Scriptsprache nicht zulässig wäre, sondern daß der Aufruf"javascript:" mehr als deplaziert ist, da dem Browser im Falle eines Eventhandlers nicht auch noch extra mitgeteilt werden muss, daß nun Javascript folgt, da er das sowieso erwartet.
Ist es nicht eher so, dass er irgendeine Skriptsprache erwartete, wenn ihm nicht anderweitig, nämlich im <head>, ausdrücklich gesagt würde, dass es sich um JS handeln soll? Wäre dort etwas anderes angegeben, würde er innerhalb des Event-Handlers auch kein JS erwarten.
MfG, at
Hallo at,
Ist es nicht eher so, dass er irgendeine Skriptsprache erwartete, wenn ihm nicht anderweitig, nämlich im <head>, ausdrücklich gesagt würde, dass es sich um JS handeln soll? Wäre dort etwas anderes angegeben, würde er innerhalb des Event-Handlers auch kein JS erwarten.
Nein, imho nicht.
[zitat]Event-Handler (Ereignis-Behandler) sind ein wichtiges Bindeglied zwischen HTML und JavaScript. Event-Handler werden meist in Form von Attributen in HTML-Tags notiert. Da es sich um Bestandteile handelt, die innerhalb von HTML vorkommen, hat das W3-Konsortium die Event-Handler mittlerweile auch in den HTML-Sprachstandard mit aufgenommen (siehe auch Universalattribute: Event-Handler). Dort wird auch festgelegt, in welchen HTML-Tags welcher Event-Handler vorkommen darf. ... Event-Handler erkennen Sie daran, dass solche HTML-Attribute immer mit on beginnen, zum Beispiel onClick=. Hinter dem Istgleichzeichen notieren Sie - in Anführungszeichen, eine JavaScript-Anweisung. Wenn Sie mehrere Anweisungen ausführen wollen, dann definieren Sie sich dazu am besten in einem JavaScript-Bereich eine Funktion und rufen hinter dem Istgleichzeichen diese Funktion auf, also z.B. onClick="Umrechnen()". ...[/zitat]
Man möge mich berichtigen, wenn ich falsch liege.
Gruß
Kurt
Hallo.
[zitat]Event-Handler (Ereignis-Behandler) sind ein wichtiges Bindeglied zwischen HTML und JavaScript. Event-Handler werden meist in Form von Attributen in HTML-Tags notiert. Da es sich um Bestandteile handelt, die innerhalb von HTML vorkommen, hat das W3-Konsortium die Event-Handler mittlerweile auch in den HTML-Sprachstandard mit aufgenommen (siehe auch Universalattribute: Event-Handler). Dort wird auch festgelegt, in welchen HTML-Tags welcher Event-Handler vorkommen darf. ... Event-Handler erkennen Sie daran, dass solche HTML-Attribute immer mit on beginnen, zum Beispiel onClick=. Hinter dem Istgleichzeichen notieren Sie - in Anführungszeichen, eine JavaScript-Anweisung. Wenn Sie mehrere Anweisungen ausführen wollen, dann definieren Sie sich dazu am besten in einem JavaScript-Bereich eine Funktion und rufen hinter dem Istgleichzeichen diese Funktion auf, also z.B. onClick="Umrechnen()". ...[/zitat]
Es wäre nett gewesen, wenn du eine Quelle angegeben hättest ;-)
Ich habe die Passage aber letztlich doch gefunden -- im Kapitel über JavaScript. Da wundert mich diese Bezugnahme wenig.
Man möge mich berichtigen, wenn ich falsch liege.
Mit dieser Frage sind wir nicht allein: http://forum.de.selfhtml.org/archiv/1998_4/t00905.htm#a3525.
MfG, at
Hallo at,
Es wäre nett gewesen, wenn du eine Quelle angegeben hättest ;-)
Ich habe die Passage aber letztlich doch gefunden -- im Kapitel über JavaScript. Da wundert mich diese Bezugnahme wenig.
Öhm ja, sorry, war doch schon etwas müde. :-)
Man möge mich berichtigen, wenn ich falsch liege.
Mit dieser Frage sind wir nicht allein: http://forum.de.selfhtml.org/archiv/1998_4/t00905.htm#a3525.
Scheint so, wobei ich eventhandler noch nie im Zusammenhang mit einer anderen Programmiersprache in Aktion gesehen habe.
Das heisst allerdings nicht, dass es das nicht doch gibt.
Gruß
Kurt
Hallo.
Das hatte ich ganz vergessen: Auf deine Zufallssignatur ist wirklich Verlass ;-)
MfG, at
Hallo at,
Das hatte ich ganz vergessen: Auf deine Zufallssignatur ist wirklich Verlass ;-)
So'n Zufall aber auch... :-)
Gruß
Kurt
Hallo,
in meinem schlimmen Doppelposting [pref:t=68883&m=396013] wurde das Problem gelöst.
die letzten Zeilen des Scripts müssen lauten:
...
fenster.document.open();
fenster.document.write(text);
fenster.focus();
fenster.document.close();
Nochmal Entschuldigung ob meiner harschen Ausdrucksweise.
mfg Alfie