Archivlink: javarea.de Forum > (X)HTML & CSS (allgemein) > onunload
Vollständigen Link anzeigen: javarea.de Forum > (X)HTML & CSS (allgemein) > onunload

Pages: [1]

geschrieben von zippy am 03.05.2008 - 04:21
ich möchte onunload ein paar funktionen ausführen, aber settimeout und so gehen dann nicht. hat wer tipps?

geschrieben von Klaush am 05.05.2008 - 07:52
Ich befürchte, da hast du schlechte Karten. Wenn die Seite geschlossen ist, woher kommen die Informationen was das setTimeOut machen soll?

Wenn dann gehts nur über eine neue Browserinstanz die im nicht sichtbaren Bereich liegt. Die neue Instanz kann dann dein settimeout ausführen.

geschrieben von zippy am 06.05.2008 - 20:30
Herzlichen Dank! Ich habs in der Zwischenzeit so gelöst:

1.: onclick-events werden darauf geprüft, ob sie auf einen link innerhalb der seite verweisen
2.: das href dieses links wird gemerkt.
3.: die aktion wird deaktiviert.
4.: meine unload-aktion startet (eine art dia-slide-effekt zum seitenwechsel)
5.: umleitung auf den gemerkten link.

Mittlerweile mach ich aber ganz was anderes ...

geschrieben von Klaush am 06.05.2008 - 21:48
Verstehe ich trotzdem nicht!?!

Was soll das Merken der Links für einen Sinn ergeben? Wie willst du jetzt dein setTimeOut() ausgeben, wenn unonload bereits gestartet ist, gibt's dazu auch eine Demo?

geschrieben von zippy am 07.05.2008 - 15:28
Das musste ich erst basteln, verehrter Herr Präsident! Für die derzeitigen Versionen weiß ich schon wieder etliche Verbesserungen.

Da ist der ALTE Versuch:
http://www.centralgarden.at/testtt_frame.htm
Hab es so eingestellt, dass JEDER Link zur gleichen Seite führt. Es ist ein Slideeffekt. Schlecht gemacht und mit nem Frame, damit der Hintergrund stehen bleibt. Wie du siehst, wird der onunload-event gar nicht abgefragt.

Eine bessere Version ist hier:
http://www.centralgarden.at/index.php?tdid=1
Dort wird dir neue Seite in ein verstecktes iframe geladen und startet dann von sich aus den Seitenwechsel. Könnt man auch so umstellen, dass der Seitenwechsel beginnt, BEVOR die neue Seite völlig geladen ist und diese dann nur den zweiten Teil auslöst. Dann beginnt der Effekt sofort, statt zu warten, bis die neue Seite geladen ist. Schon probiert und funzt. Auch hier ist probeweise ein Slideeffekt als Übergang. Es lassen sich aber verschiedenste Effekte über die ladende und die geladene Seite triggern, zum Bsp., indem man ganze Funktionen als Argument übergibt. (Schon getestet). Besonders wichtig finde ich, dass die ganze Seite auch OHNE Javascript funktioniert. Deshalb will ich in die Links keinen Javascriptverweis reinschreiben.

Unzufrieden bin ich mit der ganzen Sache, aber besonders mit der Abfrage, ob ein Event einen Link trifft. Dafür spidert das Script nämlich bei jedem Click aufwärts, bis es ein A- oder ein BODY-Element trifft.

Weißt du eine direkte Abfrage, ob ein Event ein Linkklick ist? onlinkclick oder so ...

geschrieben von Klaush am 07.05.2008 - 16:43
Soviel ich weiß, kann das setTimeOut() nur ab 200ms genau sein, deshalb bringen 10ms timer nichts.

Du kannst den EVENT mit Event.CLICK abfangen, dass erspaart dir das filtern, da der Event genau erkennt wann ein onclick stattfindet.....

Hier mal ein kleines Bsp auf die schnelle:
HTML-Quelltext
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
<script>
// wenn geklickt, dann Ausgabe
function onclickHandler(e) {
	alert(1);

  // Event von document aus weiterleiten
  document.routeEvent(e);
}

document.captureEvents(Event.CLICK);
document.onclick = onclickHandler;

</script>
<body>
<a href="http://javarea.de">javarea.de</a>



Das alert() wird natürlich immer dann ausgeführt, wenn ein click gemacht wird, aber routeEvent() geht dann ins leere, weil kein Ziel bestimmt ist.

geschrieben von zippy am 12.05.2008 - 00:18
Hab jetzt ein paar Versuche mit diesen Methoden hinter mir und dabei oft Probleme mit verschiedenen Browsern gehabt.

Lass ich halt das Script wieder bei jedem Click raufspidern...

Dafür ist ein anderes Problem aufgetaucht: Unter meinem w2k geht alles in Intex, FF, Opera und Safari, aber es kommt Feedback von den Auftraggebern, dass immer wieder mal ne Ebene mit Plugins hängenbleibt. Muss dazu sagen, dass mein Safari nur ohne Plugins läuft. Die Container dürften also in Ordnung sein. Der FF hat auch ne Textebene nicht verunsichtbart, wenn zB der overflow auf Auto war und die Ebene beim Seitenwechsel bloß vernullt wurde. Das hab ich gelöst, indem ich einfach diese Attribute mitgeändert hab.

Geht um folgendes: Die neue Seite wird in ein vernulltes iframe geladen und analysiert von dort aus das top-document. He nach Bedarf schreibt sie dann neue Inhalte rein. Wenn die geladene Seite eine Medienseite ist, dann vernullt sie den Textcontainer und macht den Mediencontainer auf, und umgekehrt, weshalb zB ein Video oder Musik im Hintergrund weiterläuft, während man ein paar Textseiten durchblättert, und wenn man dann wider auf die Medien geht, landet man bei der letzten Füllung des Mediencontainers, usw...

Bei dem besagten Safari geht es in eine Richtung ganz gut, aber wenn man dann in den Textmodus zurück geht, wird die Textebene ins overflow geschoben, obwohl die Medienebene nicht mehr sichtbar ist ...


Da ein Beispiel:

http://centralgarden.at

Funzt bei dir der Wechsel zwischen Media und Redaktionscontent?


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.