d.h. Ihr habt keine Lösung für das Problem? Kommt schon ... das muss ja irgendwie lösbar sein ...
Beiträge von maciek
-
-
Zitat von Swoncen
Versteh ich nicht.. Du meinst du setzt irgendwo in deiner Funktion die globale Variable auf einen Wert und der ändert sich erst zu diesem Wert, wenn du aus der Funktion draussen bist? Wenn ich das so richtig verstanden hab, dann poste mal bitte diese Funktion, denn bei mir gibts so ein Problem nicht.
für mal den Code aus. Die Farbe des Textes wird nicht sofort umgeändert, sondern erst nach 2sek. Wenn es bei Dir anders ist, dann würde es mich interessieren, was für eine Umgebung Du hast. Bei mir dauert es 2sek beim Mozilla und beim IE.Zitat von Swoncenbtw.: Warum hast du in der do-while Schleife noch dieses "var"? Hast die Variable ja schon deklariert.
die do-while Schleife ist ein copy & paste von irgendwo aus dem InternetzZitat von seHaasmaciek: ich weiß zwar nicht warum das iframe nur einmal neu geladen wird, aber is in dem fall nicht eh egal, der zweite click war ja "unabsichtlich". bzw wann hättest du running wieder zurückgeändert?
naja ... egal ist es nicht. Es ist zwar ziemlich unwahrscheinlich, dass jemand das tut, aber nix desto trotz. Vielleicht erklär ich mal kurz, was tiefere Sinn und Zweck der eigentlichen Funktion ist: Man hat eine Gruppe von Menüelementen. Neben der Gruppebezeichnung gibt es wie beim Windows Explorer dieses +/- Mit diesem kann man die Elemente über display:none bzw. display:block ein- bzw. ausblenden. Zusätzlich wird jeder Klick drauf auch an ein Servlet submitted, das den Zustand jeder Gruppe speichert. Damit soll gesichert werden, dass wenn jemand die Sichtbarkeit ändert, die Seite verlässt und wieder zurückkommt, der Zustand noch immer der gleiche ist, wie von ihm ausgewählt.Und deswegen ist es nicht wurscht: Wenn ich jetzt nämlich 2x hintereinander schnell klicke (und zwar muss es nicht die gleiche Gruppe sein, es können auch zwei sein), geht der zweite Request zum Speichern verloren. D.h. ich habe eine Inkonsistenz zwischen dem was javascript darstellt, und dem was in der Session gespeichert wird.
-
Hallo Zusammen!
Ich sitze gerade bei einem Problem, und bin dadurch auf eine interessante Fragestellung gestossen: So wie es ausschaut, dürfte javascript die Änderungen, die innerhalb einer function gemacht werden, erst "submitten", wenn die Funktion zu Ende ist. D.h. bei folgendem Codeschnippsel:
HTML
Alles anzeigenfunction changeColor() { document.getElementByID("content").style.color = "#ff0000"; wait(2000); } function wait(millis) { date = new Date(); var curDate = null; do { var curDate = new Date(); } while(curDate-date < millis); }
dass sich die Schriftfarbe des Elements mit der ID "content" erst 2sek später und nicht sofort ändert. Wie kann man das verhindern? Wie kann man diese Änderungen sofort "nach draussen flushen"?
Wie kommt man auf so eine blöde Fragestellung? Ich hab eine Funktion, die eine Änderung einer bestimmten Variable über ein IFrame an ein Servlet postet, damit falls sich die Variable ändert, das zwar in der Session gespeichert werden kann, aber nicht die ganze Seite neu geladen werden muss (es gibt noch einige andere Variablen).
Die Funktion funktioniert soweit prächtig. Bis ... man auf die Idee kommt, den Button (oder die Buttons) sehr schnell hintereinander zu drücken (aber definitiv kein Doppelklick). Die Funktion wird dann zwar zwei Mal ausgeführt, aber das Formular im IFrame (Request an das Servlet) nur 1x abgeschickt.
Jetzt hab ich mir gedacht, dass ich die Funktion synchronized mach. Das Wort "synchronized" ist zwar schon in JavaScript reserviert, nur ist damit leider keine Funktionalität verbunden. Gut ... also selber eine Art synchronized machen. Kein Problem ... globale Variable "running". Sobald man in der Funktion drinnen ist, wird überprüft, ob running auf false ist. Falls ja, wartet man. Falls nein, setzt man sie auf false und führt den Rest. Würde ja alles superprächtig passen, wenn nicht die Änderung der globalen Variablen "running" nicht erst ganz am Ende der Funktion in die "Aussenwelt" geflusht wird. Womit ich wieder am Anfang der Geschichte angelangt wäre ...
Hat jemand Ideen?
-
steh ich jetzt ganz arg auf der Leitung, oder kann es sein, dass der IE innerhalb des <iframe>-Tags javascriptmäßig keine Style anweisungen checkt?
Wenn ich z.B.
schreibe, kann ich mir mit element = getElementByID("foobar") das Element holen (sowohl im IE als auch im Moz). So weit, so gut. Wenn ich jetzt aber element.style abfrage, so existiert es unter IE nicht. Hat jemand eine Idee, was da das Problem ist?
So kann ich nämlich die visibility nicht über javascript steuern.
EDIT: Hab das Problem mit dem Style gelöst (document.all.[idname].style findet er ihn dann doch auf 1x). In Summe hab ich das Problem auch - wie in dem ersten Artikel beschrieben - mit einem IFrame gelöst. :verycool: Hab ordentlich über den depperten IE rumgeflucht ... :mad:
-
hmmm ... ich weiss nicht, ob mein Chef von diesen Lösungen gleich begeistert sein wird.
-
ich hab ja ganz am Anfang geschrieben, dass das ein Bug vom IE ist. Allerdings kann ich mir nicht vorstellen, dass es dafür wirklich keine gängige Lösung gibt.
-
eine Frage ganz gradaus: Welchen Vorteil hätte die Verwendung Deiner Libraries im vgl. zu PEAR? Oder anders gesagt: Wieso hast Du Dir die Mühe gemacht, die Library zu schreiben, anstatt einfach PEAR zu benutzen?
-
bitte schön. Ich hab den relevanten Code aus dem PHP-Projekt rauskopiert und in das .rar gepackt. Anbei sind auch die Screenshots vom Firefox und IE.
-
Zitat von java-girl
Stimmt. Wäre mir aber ehrlich gesagt egal. Ich meine wer dieses Programm verwendet gehört sowieso geschlagen....IE ist sogar zu dumm um einen iFrame anzuzeigen :omg:
über die Intelligenz von IE braucht man nicht lang diskutieren. Allerdings wird man bei einer halbwegs "öffentlichen" Seite nicht drum herum kommen, den IE in Betracht zu ziehen. Leider. -
Hi Zusammen,
kennt Ihr das Problem: Man blendet mit DHTML ein <div> ein. Alles wunderbar. Solange da (nur im IE) drunter nicht ein <select> ist. Das <select> "brennt" durch das <div> durch und reagiert leider nicht auf irgendwelche z-index Angaben (IE bug). Jetzt hab ich auf http://www.codetoad.com/forum/20_22736.asp eine vermeintliche Lösung für das Problem gefunden. Irgendwie mit iframes, die angeblich nicht "durchgebrannt" werden.
Hat jemand das Problem erfolgreich gelöst? Wie?
Thanx 4 help.
-
Zitat von java-girl
bei tr:hover und td:hover gibt es Probleme beim IE. Ich löse das mit onMouseOver and -Out. Und zwar am besten gleich die ganze Klasse des TDs bzw. des TRs ändern. -
Hallo!
Ich möchte ein ca. 140Kb grossen String mit unserialize() wieder zurück in ein Objekt "zurücktransferieren". Dabei bekomme ich den Fehler, dass:
ZitatNotice: unserialize(): error at offset 2 of 65535 bytes in ...
und bin jetzt auf der Suche nach der Ursache für diesen Fehler. Der String der unserialized wird, beginnt mit:
Zitats:137954:"<?xml version="1.0"?>
und ist eine XML-Struktur. Diese Funktionalität funktioniert getesterweise auf anderen XML-Strings solcher Art, die allerdings bedeutend kleiner sind. Irgendwo hat sich bei mir beim Googeln die Sicherheit eingeschlichen, dass es irgendwas mit den memory Voraussetzungen und den 64KB zu tun haben müsste. Nur ist der Memory Limit auf dem Server über 64MB. D.h., dass das eigentlich nicht um etliche 10er Potenzen höher liegt.
Hat jemand eine Ahnung, was der Grund oder noch besser die Lösung für dieses Problem sein könnte?
Thanx 4 help.
-
-
Zitat von Xeraa
also ich habe (nach einigem herumprobieren) hoffentlich endlich gecheckt, was das problem war.
wenn ich die GETs durch POST ersetze geht es gar nicht mehr, bei REQUEST ist es so wie vorher.das eigentliche problem war:
im nachhinein ohnedies klar: sobald das formular abgeschickt wird, wird die seite neu geladen damit der PHP teil drüberlaufen kann. das komische ist nur, dass dabei offensichtlich die variable im link nicht mitgenommen wird (PHP_SELF nimmt nur die URL, ohne ?variable=wert - vermute ich einmal) und deshalb immer der else zweig mit office@call-4-you.at als tatsächliche adresse genommen wird.
also normal mach ich das so: Du gibst dem submit-Button einen Namen, z.B.Und dann gehst Du her und schreibst in PHP eine Abfrage:
das muss gehen. Die Variablen im Link bzw. der Action ($_SERVER['PHP_SELF']), sind dann immer noch über _GET verfügbar. Man kann ja in einem Request Variablen über beide Methoden gleichzeitig abschicken, _GET und _POST.
-
Hallo Zusammen!
Ich habe heute einen MAMP-Server aufgesetzt. Bis jetzt hab ich hauptsächlich mit XAMPP gearbeitet, nur leider ist die MacOS Version von XAMPP für OS X nicht brauchbar, weil da noch der 9er Installer dabei ist. Dabei bin ich leider auf ein Problem gestossen, dass mir so noch nicht begegnet ist:
Die MySQL-Daten (4.1er Version) sind utf8 codiert. Die Templates auch. Unter XAMPP und auch am Inode-Server funktioniert alles tadellos. Unter MAMP verwendet er beim Lesen der Daten aus der DB aber nicht utf8, sondern latin1. Ich hab versucht mich durch die Fragestellung durchzugoogeln, aber leider erfolglos.
Es gibt zwar an vielen Stellen den Hint, dass man
bzw.
verwenden kann um das Problem zu lösen, nur leider ändert sich da genau gar nix. Auch nach dem Setzen der Codierung auf diese Weise ist das Ergebnis von "mysql_client_encoding()" noch immer "latin1".
Hat jemand vielleicht eine Ahnung, wo der Hund liegt? Das interessante ist auch, dass das phpMyAdmin das unter dem MAMP läuft, die Codierung einwandfrei hinkriegt.
-
-
naja ... ich hab irgendwie das Problem, dass ich zwar Sachen in einer Session speichern kann, nur komm ich ohne den Request nicht ran. Den Request hab ich wiederum nur in Servlets. Es ist aber nicht unbedingt jede Klasse, die userspezifische Daten braucht ein Servlet. Damit müsste ich die Servlet-Infos immer weiterreichen ... ist für mich nicht die optimalste Lösung.
Irgendwo hab ich auch gelesen, dass man threadspezifische in einer Variablen speichern kann. Nachdem ja das Servlet das ursprünglich eine Kette von Klassen aufruft, auch ein Thread ist ... könnte man so vielleicht was drehen?
Im Prinzip geht's auch darum, dass ich innerhalb eines Requests eine Variable setzen kann, die für diesen Request (= Thread = Benutzer) immer den gleichen Wert hat.
Das könnte ich z.B. dazu nutzen: Ich hab einen Errorhandler, der nach auftreten eines Fehlers verschiedene Aktivitäten durchführt. Beim Ausführen dieser Aktivitäten tritt wieder ein Fehler auf, der vom gleichen ErrorHandler behandelt werden würde ... -> infinite Loop. Wenn ich aber im Thread speichern kann, wie oft die Errorhandler-Klasse von dem aktuellen User aufgerufen wurde ...
Hilft das zu verstehen worauf ich hinaus möchte? Vielleicht ist das Denken auch ziemlich PHP-entwicklungstechnisch vorbelastet ... ich bin für Vorschläge offen.
By the way: Das Exceptionhandling hab ich nach dieser Methode gelöst. Was haltet Ihr davon?
-
so was Ähnliches hab ich mir gebastelt ... aber: Gibt es in Java keine "vordefinierte" Struktur, mit der man das lösen kann?
-
Hi Zusammen!
Noch eine java-Newbie-Frage: Wie stoppe ich ein Servlet? Ich bin in einem "beliebig tiefen" Objekt, das ursprünglich vom Servlet aufgerufen wurde. Das Objekt erkennt einen Fehler, leitet die Messagen an den ErrorHandler. Dieser macht irgendwas, und gibt die Message auf dem Bildschirm aus. Anschliessend soll der Request an das Servlets nicht mehr weiter abgearbeitet werden. In etwa so:
Code
Alles anzeigen/* * output the error response */ response.reset(); response.setContentType("text/html"); out.println("stopped because of an error."); /* * stop the servlet from executing further code */ ???
Mit System.exit() kill ich das ganze Servlet. Mit return; könnte ich die Abarbeitung des Servlets unterbrechen, wenn ich direkt im Servlet wäre. Bin ich aber nicht. Wichtig ist, dass das Servlet nicht gekillt wird, sondern nur der Request nicht mehr weiter abgearbeitet wird.
Ich bin mir ziemlich sicher, ich bin nicht der erste, der die Fehlerbehandlung so ähnlich lösen möchte. Kann mir bitte jemand helfen, von der Leitung runterzusteigen?
Thanx.
EDIT:
Hab mir jetzt überlegt, dass der oben genannte CodeTeil in einer Exception, die sich von der RuntimeException vererbt, drinnen stehen könnte. Vorausgesetzt, dass diese Exception nicht fälschlicherweise vonabgefangen wird, komme ich so zum letzten Block der im doPost selber drinnen steht und kann den ServletRequest fein abbrechen.
Was haltet Ihr von der Idee?
-
Hallo Zusammen!
Die Fragestellung mag jetzt vielleicht blöd klingen, aber ich weiss nicht so genau, wie ich es formulieren soll: Wie kann ich einen "privaten" Singleton machen? Was ich machen kann ist:
-) "normale Klasse": Für jeden Benutzer, bei jedem Aufruf verschieden.
-) Singleton: Für jeden Benutzer, bei jedem Aufruf gleich.
-) "private Singleton": Für EINEN Benutzer, bei jedem Aufruf gleich. Pro Benutzer verschieden.Ich hoffe, ich hab das halbwegs verständlich ausgedrückt.
Thanx 4 help.