Firefox ist ein !!!RIESENSCHROTT!!!
Geizhals » Forum » Programmierung » Firefox ist ein !!!RIESENSCHROTT!!! (118 Beiträge, 2026 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Firefox ist ein !!!RIESENSCHROTT!!!
14.04.2006, 16:07:00
Hi !

Habe ein Problem auf folgendes reduzieren können:

<html>

<script type='text/javascript'>
        function show(was)
        {
                document.write(
                        was + '=' +
                        document.getElementById('x').style[was] +
                        '<br>');
        }

</script>

&lt;div id='x' style="z-index:10; background-color:yellow; border: 1px solid grey;">bubu</div>
&lt;script type='text/javascript'>
        show('border');
        show('background-color');
        show('z-index');
&lt;/script>

&lt;/html>



das Beispiel liefert

bubu
border=1px solid grey
background-color=undefined
z-index=undefined


Also kann er scheinbar keine Style-Attribute mit "-" drin auslesen...

Kann ja nicht sein, daß FF sowohl zu blöd für ein getAttribute am Style ist - als auch zu blöd für ein lesen eines Styles mit "-" drinnen... Nach langem suchen im eigenen Code (weil man sich ja denkt, daß der FF net so deppat sein kann) habe ich Google angeworfen... JA, man muß den style beim lesen von "z-index" auf "zIndex" umbenamsen... so ein Shaaaaß!

Was man mit dem ganzen Gefrickel an Zeit verliert... brrr.

Kein Wunder, daß 90% der User auf IE schwören...

EDIT:
Ach ja, wenn sich wer wundert, warum ich mit document.write rumshice...
Weil der schwule FF bei alert() auf meiner zu debuggenden Seite gerne mal mit "permissiondenied in XULElement.." oder so antwortet... Nach nachgoogeln habe ich gefunden, daß der Bug im FF mindestens seit 2004 drinnen ist... Soviel zu den traumhaften schnellen Bugfixes... ARGH.

Man sollte ja meinen, daß offene Standards, OpenSource-Entwickler und deren OpenSource-Produkte harmonieren, aber NEIN. Da zitier' ich mal Pervasive:

alles ! ! ! ! G E F R I C K E L ! ! ! !


EDIT²:
Noch blödsinniger an dem ganzen ist, daß FF kein

style='zIndex=10;'
versteht. Für dasselbe Trum will er also [zumindest] 2 verschiedene Schreibweisen. Man muß sich also einen Frickelparser basteln, der ein "-x" in "X" umwandelt.. ARGH. Wenn's wenigstens eine Funktion dafür dabei hätten a la "QuoteStyleMeta" oder so.. aber auch net...

14.04.2006, 17:39 Uhr - Editiert von gepeinigter_aon_neukunde, alte Version: hier
Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
.
Re: Firefox ist ein !!!RIESENSCHROTT!!!
14.04.2006, 18:44:50
Sorry, aber bei solchen Beiträgen platzt mir doch der Kragen.

Informiert dich gefälligst mal, bevor du dich mit JS & Co auseinander setzt, dann wüsstest du, dass bei den Style-Definitionen kein "-" vorkommt, sondern aus background-color ein backgroundColor wird.

Und das ist übrigens nicht nur beim FF so, sondern auch bei jedem anderen Browser.

Der FF kann für deine Probleme genau _garnix_ - es ist bei JS einfach nicht möglich, einen Bindestrich in einem Variablennamen zu verwenden, darum sieht die Style-Definition in JS eben anders aus als per CSS.

Schlußendlich geht es dir aber wie allen Browser-Jüngern, die FF, Opera & Co. verschreien: Haben selbst keine Ahnung von einem sauberen Programmierstil, und verfluchen dann Browser, die sich an Richtlinien halten, und ihren Schrott-Code nicht umsetzen.

Ich empfehle dir, mal ein paar Tage auf C/C++ umzusteigen, da wird dir der Compiler auch keine Fehler verzeihen, vielleicht lernst du daraus, in Zukunft korrekten Code zu schreiben, bevor dir wieder solche verbalen Auszucker unterlaufen.

Gruß,
Dr. Watson, der mit jedem der verbreiteten Browser klarkommt.
--
DiTech postete:
Sie haben offensichtlich 7mal mit dem Goldadler positive Erfahrung gemacht. Bei dieser Menge an Glück sollten Sie Lotto spielen.

GHF Watcher 1.2 - Firefox Erweiterung für Geizhals User
14.04.2006, 18:44 Uhr - Editiert von Dr. Watson, alte Version: hier
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...
Re(3): Firefox ist ein !!!RIESENSCHROTT!!!
14.04.2006, 21:46:23
1.) Habe ich schon geschrieben, daß - wenn das beim IE auch so ist - ich mich
korrigiere... Dann ist JS Schrott, net nur der FF ;-)

Der FF implementiert JS so, wie es sein soll - ob das nun von Vorteil ist oder nicht, sei dahin gestellt.
Ich selbst versuche jedenfalls, meine Webseiten frei von JS zu halten, viele Anwendungsfälle gibts nicht, in denen das nützlich sein kann.
Ausnahme: AJAX.

2.) Habe ich ja bei der Fehlersuche versucht, mich zu informieren.. und
SELFHTML gewälzt.
Dort findet man schnell getAttribute() von all... nur steht dabei, daß das nur
der IE kann.
zIndex taucht auch nicht im Quickbar auf (dann hätte ich es gefunden). Aber
ich postete ja schon mal daß ich vermute, daß Selfhtml suboptimal (auch für
DAU-Gschichtn wie diese) ist - wurde ja bestritten, es sei superst.


Dafür hätte auch der DOM-Inspektor gereicht, den dir der FF-Installer bei der Installation anbietet.
Dann hast du eine übersicht sämtlicher JS Klassen, und deren Variablen und Methoden.
Dann hast du eine übersicht aller Variablen, die dir z.b. durch ein #id.style. zur Verfügung stehen.

3.) Für die dauernden "permissiondenied in XULElement..."-Gschichtn, die Bugs
aus dem 2004er-Jahr darstellen, kann er aber schon was... und daß debuggen
halt fad ist, wenn man sich drum alles mit document.write verschandeln muß


Da kann ich nur sagen: Warum verwendest du auch Dinge wie document.write? Deprecated.
Normalerweise macht man sowas mit nem P-Tag mit beliebiger ID, und weist eben diesem per .innerHTML Content zu.

Über die ganzen anderen Sinnlosen FF-Gschichtn (zB daß man oft benötigte
Funktionen anders formulieren muß als beim IE, zB setSelectionRange(), motz
ich eh nicht - man ist ja eh Kummer gewohnt.


Deine Sicht der Dinge ist schlicht und einfach verdreht.
Nicht der FF hat die ungewöhnlichen Eigenschaften, sondern der IE.
Der IE ist es, der sich in den meisten fällen eben nicht an vordefinierte Standards hält, und eine Sonderbehandlung braucht.

Was ich so lese, ist das deine zweite Web-Applikation.
Da ist das verständlich, dass du so reagierst. War bei mir vor Jahren auch nicht anders.

Solltest du jedoch diese Arbeit fortsetzen, wirst du über kurz oder lang draufkommen, was man nicht alles feines basteln könnte, wenn nicht der "gute" IE unzulänglichen oder gar keinen Support für diese Features bieten würde.
--
DiTech postete:
Sie haben offensichtlich 7mal mit dem Goldadler positive Erfahrung gemacht. Bei dieser Menge an Glück sollten Sie Lotto spielen.

GHF Watcher 1.2 - Firefox Erweiterung für Geizhals User
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...
Re: ach ja, noch 3 Punkte, schnucki:
14.04.2006, 21:53:55
Mein Snippet war syntaktisch korrekt - nur semantisch falsch. Ein C-Compiler
hätte den also /geschluckt/ wie jeder andere Compiler auch... Außer du zeigst
mir einen Compiler, der alles (net nur printf) semantisch prüfen kann...
Inzwischen hast auch Zeit um erwachsen zu werden.


Meine Worte bezogen sich nicht auf dein Code-Snippet, sondern auf deine Art, wie du an Probleme rangehst.
Anstatt dich zu informieren, redest du Software schlecht, obwohl du eindeutig im Unrecht liegst. Und selbst jetzt, wo dies bewiesen ist, setzt du deine herablassenden Worte fort.

Schrott-Code nicht umsetzen." - komisch, außer Dir wußte keiner diese
semantische Sheiß-Eigenschaft von JS im Zusammenspiel mit CSS... Wobei mir der
Hintergedanke da eh unklar ist. Wenn dem schon so ist - warum gibt's keine
JS-QuoteMeta-Funktion ? Kann das dann erst der FF 12.2.1 oder wie wird das
aussehen ?


Wie viele aktive HTML/CSS Profis gibts außer mir im Forum?
Und nochmals...diese "Sheiß" Eigenschaft ist eine Eigenschaft von JS, nicht vom FF. Es ist also falsch, dem die Schuld in die Schuhe zu schieben.

ch übergebe keinen Variablennamen sondern einen String. Wenn du den
Unterschied nicht kennst, wundert es mich nicht, daß du zu deiner
Fehleinschätzung von C-Compilern gekommen bist >:-D


Letztendlich versuchst du durch deinen String, auf eine nicht-existierende Variable zuzugreifen, und nur das zählt.

Als Fazit kann ich nur sagen: Ich habe deutlich genug bewiesen, dass du mit deinen Anschuldigungen dem FF gegenüber im Unrecht liegst, da kannst du dich nicht rausreden.
Schnucki.
--
DiTech postete:
Sie haben offensichtlich 7mal mit dem Goldadler positive Erfahrung gemacht. Bei dieser Menge an Glück sollten Sie Lotto spielen.

GHF Watcher 1.2 - Firefox Erweiterung für Geizhals User
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
....
Re(2): ach ja, noch 3 Punkte, schnucki:
15.04.2006, 14:22:58
Ad "anstatt dich zu informieren"...
Nachdem ich das Problem zIndex mal soweit reduzieren konnte, daß ich eben obiges Snippet produzieren konnte, googelte ich danach... Und siehe da, das taucht auf vielen Foren als "BUG" auf...

Im Unrecht war ich definitiv bei dieser Geschichte - sobald das aber klar war (vor deinem Großkotz-Posting) korrigierte ich meine Anschuldigung von FF ist Schrott auf JS ist Schrott ;-) Bei nochmaliger Überlegung würde ich dazu tendieren, daß sowohl JS als auch CSS Schrott sind... Begrüdundung: Aus JS-Seite könnte man das wohl locker wie ein Synonym betrachten - bzw. es fehlt zumindest die QuoteMeta-Funktion (Oder von mir aus ein Äquivalent zu host-Order-2-Network-Order wie bei Socket-Programmierung). Aus CSS-Seite weil man dort ebenfalls die "-"-Styles als deprecated einstufen könnte (weil sie eben Probs in der Anwendung bringen) und parallel dazu zB ein style='zIndex:10' erlauben. Wäre wohl auch kein Aufwand.

Was aber bestehen bleibt sind die XULElement-Bugs... und die nerven. Wenn ein alert() statt einer Ausgabe nur soetwas triggert, ist es IMHO übelst.


Es ist also falsch, dem die Schuld in die Schuhe zu schieben.

Ich habe es schon einmal versucht klarzumachen, aber manche sind ja leseresistent. Also nochmals: Sobald mir das klar wurde - vor deinem Posting - habe ich meine Anschuldigung korrigiert...


Letztendlich versuchst du durch deinen String, auf eine nicht-existierende Variable zuzugreifen, und nur das zählt.

Leider ganz falsch - aber ja nicht das erste falsche von Dir. Du hast behauptet, daß ein C-Compiler solche Fehler abfangen könnte. Wenn du eine Funktion aufrufst, die einen char * erwartet und du ein char * lieferst - dann kann das ein C-Compiler net abfangen... Denn es ist syntaktisch korrekt. Auch wenn dann eine Variable falsch referenziert wird - bleibt's dasselbe. Vielleicht solltest mal nach der Unterscheidung Syntax/Semantik googeln und Dir dabei überlegen (oder auch nachgoogeln), was Compiler so alles prüfen...


Als Fazit kann ich nur sagen: Ich habe deutlich genug bewiesen, dass du mit deinen Anschuldigungen

Wieso Plural ? Wieso überhaupt was ?
Ein anderer Poster hat mich - vor Dir - darauf hingewiesen, daß mein Style-Vorwurf net paßt... Meine anderen Vorwürfe (zB daß FF [noch] nicht standardisierte Sachen absichtlich anders löst als der IE sowie der XULElement-Bug) hast ja nicht einmal erwähnt.

Wieso FF Funktionen, die der Marktführer entwickelt hat und die noch nicht standardisiert sind extra anders benamst, ist mir ja bis heute unklar....

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
..............
Re(12): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 08:13:30
Danke, jetzt ist klar dass du gar keine Ahnung hast.

Ein focus() kann niemals in einer onblur() Methode funktionieren, weil das ganze keinen Sinn ergeben würde.
onblur() wird ausgelöst, sobald ein Element seinen Fokus verliert. Wo liegt denn da der Sinn, dem Element gleich wieder den Fokus zu geben? Da würde der Benutzer nie mehr etwas anderes als *dieses* Eingabefeld selektieren können.

Der FF kann also - zum wiederholten Male - nichts dafür, es ist schlicht und einfach auf deine Inkompetenz zurückzuführen.

Bei dieser Autocomplete Geschichte ist es das selbe.
Du verwendest eine Funktion, die in keinem Standard definiert wurde - und daher _in jedem Browser anders implementiert sein kann_.

Opera, der sich noch ein Stück mehr an die Standards hält, als der FF, implementiert diese Funktion gar nicht erst, warum auch?
Damit Entwickler wie du weiterhin mit ihrem Schrott Code das WWW versauen?
Da muss ich dich enttäuschen, die Zeiten in denen jeder dahergelaufene Anfänger Web -Seiten und -Anwendungen entwickelt, neigen sich dem Ende.

Mit dem Web 2.0 steigt die Anzahl der Cross-Browser kompatiblen, sauber geschriebenen Seiten wieder extrem an, die Anzahl der fähigen Entwickler steigt ebenfalls.

Am Ende kann ich nur anmerken, dass du mit deinen Problemen alleine dastehen wirst, die Gründe dafür hab ich bereits mehrfach genannt.
Ändere deine Denkweise bezüglich der Web-Entwicklung - der IE hat damals den veralteten Netscape abgelöst, und heute wiederrum wird der IE, weil veraltet, abgelöst.
Sieh das ein, oder geh mit diesem sinkenden Schiff unter - du hast die Wahl.
--
DiTech postete:
Sie haben offensichtlich 7mal mit dem Goldadler positive Erfahrung gemacht. Bei dieser Menge an Glück sollten Sie Lotto spielen.

GHF Watcher 1.2 - Firefox Erweiterung für Geizhals User
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...............
Re(13): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 08:51:50

Ein focus() kann niemals in einer onblur() Methode funktionieren, weil das ganze keinen Sinn ergeben würde.
onblur() wird ausgelöst, sobald ein Element seinen Fokus verliert. Wo liegt denn da der Sinn, dem Element gleich wieder den Fokus zu geben? Da würde der Benutzer nie mehr etwas anderes als *dieses* Eingabefeld selektieren können.

Sorry, aber nur weil du keinen Sinn erkennst bedeutet es nicht zwangsläufig, daß es ihn nicht gibt. Ich habe Fälle, wo es Sinn macht:
zB im Rahmen einer inputbox, die Werte nach einem festen Muster erwartet - zB einer SAP-Nummer. Die muß 10stellig und numerisch sein. Wenn einer so ein Feld verläßt und etwas eingegeben hat, das nicht paßt (zB Aplhas drinnen oder falsche Stellenanzahl) - dann macht eine Warnung mit alert() und ein zurückpositionieren Sinn. Das Ganze wäre auch korrekt nach SRP.

Definitiv ist es nach den Standards nicht untersagt, IE kann's auch, einen Browser, der glaubt, vermuten zu müssen was mehr Sinn macht brauche ich nicht... Übrigens ist der Bug in der Bugzilla-DB vom FF auch als BUG geführt. Anders als Du sind sich die Entwickler also bewußt, daß es ein Bug ist.

Ad Autocomplete verwenden:
Ich /will/ mich um das Autocomplete vom FF net kümmern - nur muß man es - siehe auch hier:
http://www.thescripts.com/forum/thread145213.html
Ist einfach noch ein BUG vom FF, an dem man als Workaround nur vorbeikommt, wenn man "autocomplete=off" in der Inputbox dazuschreibt (bis dato kannte ich das Attribut nicht einmal ;-) ).
Wenn du Webseiten-developer wärst, wüßtest du das sicher... oder du verwendest nie ne Inputbox ;-)

EDIT: Um es verständicher zu machen..
Ich will im Prinzip nix anderes an Funktionalität, als du in einer normalen Combo-Listbox hast, bei der du nur vorhandene Werte eingeben kannst. In der GUI-Programmierung ist es - mit gutem Grund - üblich, daß die Listbox dann selbst checkt, ob der eingegebene Wert "richtig" ist - und ansonsten eine Warnbox präsentiert und den Focus wieder auf die Listbox setzt. Das ist die äquivalente Aufgabenstellung: Beim Verlassen (onblur()) checken, ob es ein gültiger Wert ist - und notfalls eine Warnbox ausgeben und wieder den focus zurück auf das Element setzen. Sooo utopisch kommt mir mein Wunsch also net vor, in einer onblur-Methode einen focus zu setzen. Einen Workaround habe ich eh gefunden: Am Ende der onblur-methode ein "window.setTimeout(machwas(),50);" - und in machwas eben die Meldung ausgeben und den Focus setzen. Dann rennt das focus aus Browsersicht eben net im onblur und klappt. Trotz allem ist und bleibt es ein Workaround.

18.04.2006, 09:11 Uhr - Editiert von gepeinigter_aon_neukunde, alte Version: hier
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
................
Re(14): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 09:22:47
Sorry, aber nur weil du keinen Sinn erkennst bedeutet es nicht zwangsläufig,
daß es ihn nicht gibt. Ich habe Fälle, wo es Sinn macht:
zB im Rahmen einer inputbox, die Werte nach einem festen Muster erwartet - zB
einer SAP-Nummer. Die muß 10stellig und numerisch sein. Wenn einer so ein Feld
verläßt und etwas eingegeben hat, das nicht paßt (zB Aplhas drinnen oder
falsche Stellenanzahl) - dann macht eine Warnung mit alert() und ein
zurückpositionieren Sinn. Das Ganze wäre auch korrekt nach SRP.


Sowas muss man ganz und gar nicht per onblur lösen, da brauchts keine 2 Minuten, bis ein Workaround geschrieben ist.
Ad Autocomplete verwenden:
Ich /will/ mich um das Autocomplete vom FF net kümmern - nur muß man es -
siehe auch hier:
http://www.thescripts.com/forum/thread145213.html
Ist einfach noch ein BUG vom FF, an dem man als Workaround nur vorbeikommt,
wenn man "autocomplete=off" in der Inputbox dazuschreibt (bis dato kannte ich
das Attribut nicht einmal ;-) ).
Wenn du W


Gut, dann nehme ich das mit dem Bug an dieser Stelle hin.
Trotzdem - was du zu erreichen versuchst, nämlich den FF schlecht zu reden, kannst du mit diesem Argument auch nicht; für jeden Bug den der FF hat, hat der IE 5 weitere Bugs, mit dem Unterschied, dass diese schon seit Jahren nicht behoben wurden, und es auch im IE7 nicht der Fall sein wird.

Aber wie gesagt - da kommt man eben erst drauf, wenn man länger als 5 Tage als (Web-) Entwickler tätig ist.

Wenn du Webseiten-developer wärst, wüßtest du das sicher... oder du verwendest
nie ne Inputbox ;-)


Interessant, dann übe ich den Beruf wohl im Traum aus.

Im Unterschied zu dir, halte ich viele Richtlinien ein, und damit ist nicht (nur) mein Coding-Stil gemeint, sondern Allgemeine Richtlinien, an die man sich bei einer modernen Webseite hält.

Und da steht unter Usability schon mal ein großer Punkt - nämlich auf JS zu verzichten, wo man nur kann, und den User keinesfalls durch Alert-Boxen zu nerven, wenn er eine Fehleingabe getätigt hat.
Dafür reicht es, das Input-Feld per CSS in einem Farbton zu hinterlegen, damit der Benutzer weiß: da stimmt was nicht.
Sollte er dann dennoch versuchen, das Formular abzusenden, kann man immer noch ne Fehlermeldung ausgeben, und das muss auch kein alert() sein.

Solche Richtlinien gibts zu hunderten, und du verstößt bereits massiv gegen einige.
Natürlich könnte ich dir nun Links zu Seiten nennen, die das pro/contra deiner Methoden ausführlich erklären, aber warum sollte ich das?
Nur weil es dir offentsichtlich an Qualifikation fehlt?

[Nachtrag]
Und wenn du schon die Funkionalität einer Listbox willst, warum nimmst du dann ein INPUT Element? Sehr seltsame Verhaltensweise.
--
DiTech postete:
Sie haben offensichtlich 7mal mit dem Goldadler positive Erfahrung gemacht. Bei dieser Menge an Glück sollten Sie Lotto spielen.

GHF Watcher 1.2 - Firefox Erweiterung für Geizhals User
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
.................
Re(15): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 10:07:10
Das mit farblich hinterlegen stimmt wirklich oft und hilft oft viel - nur net hier.

Denn abhängig von der Eingabe will ich eben einen Request an die DB auslösen, die die Detaildaten holt und den Benutzer weiterführt...

Stell dir im einfachsten Fall eine App vor, wo der Benutzer eine Rechnungsnummer eingibt. Natürlich kann ich statt dem Alert das Teil farblich anders hinterlegen - weiterarbeiten kann er trotzdem nicht. Es macht also IMHO Sinn, ihm den Cursor gleich in das falsche Feld zu positionieren...

Natürlich ist der Workaround schnell gebaut, nur ist das unter FF stressig. Alle Fehler, die in der Beantwortung des AJAX-Requests auftreten, zeigt er in seiner Javascript-Console net an - er bricht einfach ab. Das ist /mühsam/. Genauso das Workaround-Bauen.... Jeder für sich kostet Zeit.

EDIT:
Den Alert wollte ich also größtenteils zum Debuggen - weil die Javascript-Console eben bei Fehlern als Antwort auf XMLHttpRequests nix anzeigt. Öde, daß der dann auch net geht.

Das mit dem focus() ist lästig - so wie wohl noch vieles, über daß ich beim FF stolpern werde. Derzeit habe ich ein Problem, daß ein focus() auf Inputboxen zwar klappt, aber manchmal kein blinkender Cursor in der inputbox ist. Eingeben kann man trotzdem. Eine Ahnung, wie ich an dem Bug vorbeikomme ?

18.04.2006, 10:13 Uhr - Editiert von gepeinigter_aon_neukunde, alte Version: hier
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
..................
Re(16): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 10:56:25
Das mit farblich hinterlegen stimmt wirklich oft und hilft oft viel - nur net
hier.

Denn abhängig von der Eingabe will ich eben einen Request an die DB auslösen,
die die Detaildaten holt und den Benutzer weiterführt...


Auch da gibts weitaus benutzerfreundlichere Methoden...als Beispiel nenn ich dir mal, wie es bei einer meiner Anwendungen läuft:

Sobald der Benutzer Daten ins Feld eingibt, wird dieses mit jedem Tasten druck überprüft, und solange Daten drinstehen, die nicht korrekt sind, bleibt das Feld rot hinterlegt.
Sind jetzt genug/die richtigen Zeichen im Feld, wird es grün bzw. gar nicht hinterlegt, gesperrt, und dann der Request ausgeführt.
Sobald der Request beendet ist, wird das Feld wieder entsperrt.

Auf die Art braucht der Benutzer noch nicht mal das Formular abzusenden, geht also noch komfortabler.

Natürlich ist der Workaround schnell gebaut, nur ist das unter FF stressig.
Alle Fehler, die in der Beantwortung des AJAX-Requests auftreten, zeigt er in
seiner Javascript-Console net an - er bricht einfach ab. Das ist /mühsam/.
Genauso das Workaround-Bauen.... Jeder für sich kostet Zeit.


Aus Sicht des Entwicklers ist es mühsam, jedoch hätte es keinen sinn, diese Fehler in der Console anzuzeigen.
Die Funktion xmlHttpRequest selbst liefert genug Fehlercodes zurück, die du selbst auswerten, und dem Anwender präsentieren musst.
Oder kennst du einen Anwender, der ständig die JS-Console offen hat, um sich über seine Falscheingaben zu informieren?

Ans Workaround bauen wirst du dich wohl oder übel gewöhnen müssen.
Und das sag ich nicht als Verteidung für den FF, sondern das gilt für alle Browser - Probleme mit der Kompatibilität wirst du immer haben, egal mit welchem Browser, und das ist es, was diesen Job mühsam und zeitaufwendig macht.
Mit der Zeit lernst du die Fehler der Browser kennen und zu umgehen; ganz besonders wird dir das auffallen, wenn du intensiven gebrauch von CSS machst.

Dann musst du plötzlich gewisse Hacks einsetzen, damit die Seiten im IE überhaupt angezeigt werden - als Stichwort nenn ich dir nur mal "Peekaboo".
Sobald du 2 Ebenen hast, die verschachtelt sind und ein floating aufweisen, zeigt der IE auf der halben Website plötzlich keinen Text mehr an.
Einfach so, ohne Sinn, der Text ist einfach weg, nach einem F5 ist er plötzlich wieder da - bis zum Nächsten Klick auf der Seite.
Gibt man dann ein line-height: im CSS-Body an, wird der Text plötzlich angezeigt - aber komm da erst mal drauf.

Der Bug im Box Model des IE dürfte fast jedem bekannt sein - der IE berechnet Ebenen mit Margin/Padding/Border/Width/Height/ falsch, zeigt alles zu groß an.
Um das zu umgehen, müssen wirklich übelste Hacks verwendet werden - da muss mich absichtlich falschen CSS-Attributen im Speicher des IE herumgepfuscht werden, damit alles klappt.

Den Alert wollte ich also größtenteils zum Debuggen - weil die
Javascript-Console eben bei Fehlern als Antwort auf XMLHttpRequests nix
anzeigt. Öde, daß der dann auch net geht.


Zum Debuggen hab ich immer noch alert() verwendet, und es gab bisher keine Situation, wo das nicht funktioniert hat. Du hast da also irgendwo den "Hund drin".

Das mit dem focus() ist lästig - so wie wohl noch vieles, über daß ich beim FF
stolpern werde. Derzeit habe ich ein Problem, daß ein focus() auf Inputboxen
zwar klappt, aber manchmal kein blinkender Cursor in der inputbox ist.
Eingeben kann man trotzdem. Eine Ahnung, wie ich an dem Bug vorbeikomme ?


Wie im vorvorigen Absatz erwähnt - da wirst du noch über so manches bei jedem Browser stolpern.
Den von dir erwähnten Bug kenne ich nicht - aber nachdem du eine veraltete Version verwendest, hats nicht viel Sinn, darüber zu diskutieren.
--
DiTech postete:
Sie haben offensichtlich 7mal mit dem Goldadler positive Erfahrung gemacht. Bei dieser Menge an Glück sollten Sie Lotto spielen.

GHF Watcher 1.2 - Firefox Erweiterung für Geizhals User
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...................
Re(17): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 13:58:44

Sobald der Benutzer Daten ins Feld eingibt, wird dieses mit jedem Tasten druck überprüft, und solange Daten drinstehen, die nicht korrekt sind, bleibt das Feld rot hinterlegt.
Sind jetzt genug/die richtigen Zeichen im Feld, wird es grün bzw. gar nicht hinterlegt, gesperrt, und dann der Request ausgeführt.
Sobald der Request beendet ist, wird das Feld wieder entsperrt.

Das klappt bei mir nicht - weil ich eben Anfangs noch nicht wissen kann, ob der Text gültig ist.
Das ganze Klumpat ist eben ein AJAX-Teil. Er befüllt eine Input-Box, und sobald er sie verläßt, löse ich einen XMLHttpRequest aus. Die Antwort kann nun eine XML-Datei mit weiterführenden Detaildaten sein (Im Beispiel mit der Rechnungsnummer wären es die Positionen) - oder eben eine Antwort a la "Diese Rechnungsnummer gibt es nicht".

In einem anderen Thread habe ich die Problemlösung diskutiert. Es geht darum, daß es ein paar 1000 Gruppen gibt - und zu jeder Gruppe bis zu 100 Mitglieder.

Der Benutzer tippt also die Gruppe ein - und bekommt eine per InputBox und einem Div mit href's zusammengebaute "Quasi-Comboselectbox". Mein erster Ansatz war, die paar 1000 Gruppen (zwischen 2k und 9k) einfach bei onLoad per AJAX zu holen. das Problem dabei ist, daß der DB-Server die Antwort in ein 8-10 msec fertig hatte, der Client aber doch recht beschäftigt war. Ich habe es nicht weiter verfolgt, aber ich habe den Verdacht, daß das durchparsen von ein paar Tausend XML-Tags Zeitintensiv unter Javascript ist (ich loopte durch den Array, den ich per o.responseXML erhalten habe und fetchte mir die Attribute raus).

Daher habe ich es eben so umgebaut, daß nichts vorher geladen wird - und jedes Verlassen eine Query auslöst. Das klappt bei ISDN in rund 1/4 sek bei ungecachten Daten - scheint mir also zumutbar. Problem war eben nur, daß ich erst nach vollständiger Eingabe die Prüfung machen kann...

Formular-absenden entfällt bei mir - jedes Verlassen der Feldes löst neue Aktionen aus und führt so den Benutzer. Dein Weg ist sicher eleganter - scheiterte aber an den Datenmengen zum Vorfetchen.



Die Funktion xmlHttpRequest selbst liefert genug Fehlercodes zurück, die du selbst auswerten, und dem Anwender präsentieren musst.

Da hast mich nicht verstanden.
Es geht darum, daß ich meine eigenen JS-Code-Fehler debuggen will.
Angenommen, ich schreibe in meiner Function versehentlich

 mach_was();
 o.setAttributte('visible','false') ;
 mach_was_anderes();

Normalerweise erhältst du einen Fehler in der JS-Console, daß o keine Methode "AtribuTTe" kennt - und du kannst debuggen.

Bei den Funktionen, die als Antwort eines XMLHttpRequests aufgerufen werden, kommt aber keine Ausgabe in der Console - stattdessen bricht er lautlos hier ab und mach_was_anderes wird nicht durchgeführt... Es geht mir also nicht um die Fehler, die man per XMLHttpRequest auswerten kann, wenn der Request selbst nicht klappte - sondern um das debuggen der aufgerufenen Funktion.


Zum Debuggen hab ich immer noch alert() verwendet, und es gab bisher keine Situation, wo das nicht funktioniert hat. Du hast da also irgendwo den "Hund drin".

Definitiv gab es auf meiner Seite das Problem. Statt der Alertbox konnte ich einen XULElement-error lesen (mit genau der alert-Zeile) und es kam eben keine Alertbox. Kein Witz.

Abschließend: Eine Website so zu designen, daß sie nur auf den allerneuesten Browsern rennt, halte ich für mutig. Ich gehe mit dir wohl eh einer Meinung, daß JS nur unobstrusive verwendet werden sollte und es nur den Behaviour-Layer darstellen soll (zumindest habe ich das aus deinen Postings rausgelesen). Bei AJAX spielt's das aber leider nicht - denn IMHO ist AJAX genau die ReferenzDesignverletzung sondern spielt genau andersrum.




Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
....................
Re(18): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 15:09:29
Das klappt bei mir nicht - weil ich eben Anfangs noch nicht wissen kann, ob
der Text gültig ist.
Das ganze Klumpat ist eben ein AJAX-Teil. Er befüllt eine Input-Box, und
sobald er sie verläßt, löse ich einen XMLHttpRequest aus. Die Antwort kann nun
eine XML-Datei mit weiterführenden Detaildaten sein (Im Beispiel mit der
Rechnungsnummer wären es die Positionen) - oder eben eine Antwort a la "Diese
Rechnungsnummer gibt es nicht".


Dann sende den Request halt an den Server - der liefert dann einen Wert zurück.
Ist der Wert 0, war dein Request ungültig, wenn er > 0 ist, also Daten beinhaltet, lass deine Applikation weiter ausführen.

Daher habe ich es eben so umgebaut, daß nichts vorher geladen wird - und jedes
Verlassen eine Query auslöst. Das klappt bei ISDN in rund 1/4 sek bei
ungecachten Daten - scheint mir also zumutbar. Problem war eben nur, daß ich
erst nach vollständiger Eingabe die Prüfung machen kann...


Dein Problem versteh ich.
Hast du weitere Anhaltspunkte z.b. eine fixe länge aller Strings?
Notfalls erstell halt nen Button neben dem Input-Feld, der den Request genau dann ausführt, wenn der User mit seiner Eingabe fertig ist.
Oder führe den Request automatisch aus, sobald sagen wir mal 5sek nach der letzen User-Eingabe verstrichen sind.
Das läuft z.b. in der Gebrauchtwagenbörse der BMW Group Austria so, und als User finde ich das ganz praktisch, dass meine Such praktisch on-the-fly ausgeführt wird, ohne dass ich zuerst sämtliche Felder ausfüllen muss.

Bei den Funktionen, die als Antwort eines XMLHttpRequests aufgerufen werden,
kommt aber keine Ausgabe in der Console - stattdessen bricht er lautlos hier
ab und mach_was_anderes wird nicht durchgeführt... Es geht mir also nicht um
die Fehler, die man per XMLHttpRequest auswerten kann, wenn der Request selbst
nicht klappte - sondern um das debuggen der aufgerufenen Funktion.


Dann liegts wirklich an deiner Version.
Ich entwickle momentan ne Anwendung, die intensiven Gebrauch von Ajax macht, und wenn bei mir im Code, der vom Request geliefert wird ein JS-Fehler auftaucht, erscheint eine Warnung in der Console.
Eben noch mal extra für dich getestet...

Definitiv gab es auf meiner Seite das Problem. Statt der Alertbox konnte ich
einen XULElement-error lesen (mit genau der alert-Zeile) und es kam eben keine
Alertbox. Kein Witz.


Wie gesagt, den Fehler hatte ich noch nie. Hab allerdings auch Ajax-Bezogen nie was mit FF 1.0.x gemacht.
XUL-Error klingt aber insofern nicht gut, weil er mit deiner Anwendung eigentlich nix zu tun hat. XUL ist die Sprache, in der der FF selbst "geformt" ist, sofern du keinen XUL Code einsetzt, wüsste ich nicht, warum diesbezüglich bei der Fehler auftreten.


Abschließend: Eine Website so zu designen, daß sie nur auf den allerneuesten
Browsern rennt, halte ich für mutig. Ich gehe mit dir wohl eh einer Meinung,
daß JS nur unobstrusive verwendet werden sollte und es nur den Behaviour-Layer
darstellen soll (zumindest habe ich das aus deinen Postings rausgelesen). Bei
AJAX spielt's das aber leider nicht - denn IMHO ist AJAX genau die
ReferenzDesignverletzung sondern spielt genau andersrum.


Siehst du absolut richtig.
Auf einer nicht-ajax Seite sollte JS nur Optional sein - nehmen wir z.b. ein Registrierungs-Formular her.
User, die JS aktiviert haben, werden schon vor dem absenden der Form Benachrichtigt, dass ein Feld nicht ausgefüllt wurde.
User ohne JS werden erst benachrichtigt, wenn das File schon zum Server gesendet und geparst wurde.
Somit wird niemand ausgeschlossen, und User mit JS haben eben einen Komfort-Vorteil.

Bei einer Ajax-lastigen Seite setzt man JS Quasi *TRÖT*, da ist klar, dass man intensiven Gebrauch von JS macht.
Da muss man sich aber auch im vorhinein bewusst sein, dass Leute ohne JS ganz einfach Pech gehabt haben.
Was aber je nach Einsatzzweck akzeptabel sein kann.

Trotzdem gibts Dinge, die man dem User antut - wie z.b. alert()-Boxen, die den Fokus auf sich ziehen, Modal sind, und den User aus seiner Konzentration herausreißen.
Stattdessen würde ich eine schicke DIV-Box basteln, die den User freundlich darauf hinweist, das der eingegebene Text Müll ist. Sieht dann grafisch auch noch ansprechender aus, als eine alert()-Box.
--
DiTech postete:
Sie haben offensichtlich 7mal mit dem Goldadler positive Erfahrung gemacht. Bei dieser Menge an Glück sollten Sie Lotto spielen.

GHF Watcher 1.2 - Firefox Erweiterung für Geizhals User
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
.....................
Re(19): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 15:31:28

Dann sende den Request halt an den Server - der liefert dann einen Wert zurück.
Ist der Wert 0, war dein Request ungültig, wenn er > 0 ist, also Daten beinhaltet, lass deine Applikation weiter ausführen.

Genau das wollte ich ja machen ;-)

Gruppen haben eine gewisse Syntax - und sie müssen vorhanden sein.
beim onblur wollte ich die Syntax checken - und ihn sofort zurückspringen lassen, wenn sie nicht paßt (weil es hier Null sinn macht, wenn er woanders weitergeht, wenn die "zentrale" Gruppe schon net paßt).

Zusätzlich wird - wenn die Gruppe syntaktisch paßt - eben der Request ausgelöst.

Zurück zum Rechnungsnummernbeispiel:
Wenn die Rechnungsnummer Buchstaben enthält oder zB weniger als 4 Stellen hat, könnte ich sofort zurückspringen lassen. Wenn sie nur Ziffern enthält, könnte ich den Request auslösen.

In jedem Fall soll eine Info an den Benutzer erfolgen, wenn sie nicht paßte (ob das ne Alertbox oder ein Div oder sonst was ist, sei mal dahingestellt) - und der Cursor zurückpositioniert werden. Ich finde also ein focus() in einem blur()-Event net zwingend falsch... Und den XULElement-Fehler definitiv einen Bug.

Mir ist auch klar, daß XUL aus dem Gecko-Eck kommt - und daher wohl /alle/ Browser davon betroffen sind, die auf Gecko setzen... Keine Ahnung, was Nautilus und andere "Exoten" so verwenden... Scheint aber blöd durchzuschlagen. Ich hoffe mal, daß es aber nur die FF-Anwendugn von Gecko ist...
Nachdem man aber auf FF net verzichten kann, muß ich da halt wohl durch. Ein setTimeout mit 50ms klappte ja als Lösung, wobei ich mir nicht sicher bin, ob 50ms eine gute Wahl war oder nur zufällig klappte... Was ist die kleinste ms-Zahl, die garantiert reicht um das Teil garantiert außerhalb der blur()-Funktion anstoßen zu lassen, wenn man von wirklich alten Rechnern (Pentium1, 128MB Ram mit Win2K) ausgehen muß ???



Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
......................
Re(20): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 16:02:58
Gruppen haben eine gewisse Syntax - und sie müssen vorhanden sein.
beim onblur wollte ich die Syntax checken - und ihn sofort zurückspringen
lassen, wenn sie nicht paßt (weil es hier Null sinn macht, wenn er woanders
weitergeht, wenn die "zentrale" Gruppe schon net paßt).


Gut, dann erklär das mal den FF-Entwicklern.
Habs eben lokal getestet, und das verhalten is bei v1.5 wie von dir beschrieben.

und daher wohl /alle/ Browser davon betroffen sind, die auf Gecko setzen...
Keine Ahnung, was Nautilus und andere "Exoten" so verwenden... Scheint aber
blöd durchzuschlagen. Ich hoffe mal, daß es aber nur die FF-Anwendugn von
Gecko ist...


Das muss nicht sein...du kannst z.b. ne Windows-Anwendung schreiben, und den FF dort als ActiveX Control einfügen.
Die Windows-Anwendung beinhaltet dann keine Spur von XUL, der Fehler sollte also nicht auftreten - sofern er wirklich mit dem Browser selbst zu tun hat, nicht mit der Engine.

Nachdem man aber auf FF net verzichten kann, muß ich da halt wohl durch. Ein
setTimeout mit 50ms klappte ja als Lösung, wobei ich mir nicht sicher bin, ob
50ms eine gute Wahl war oder nur zufällig klappte... Was ist die kleinste
ms-Zahl, die garantiert reicht um das Teil garantiert außerhalb der
blur()-Funktion anstoßen zu lassen, wenn man von wirklich alten Rechnern
(Pentium1, 128MB Ram mit Win2K) ausgehen muß ???


Die Lösung ist zwar unsauber, aber wenn sonst nix hilft...
Und ja, 50ms werden ausreichen...glaub kaum dass der User es in 50ms schafft, das Feld zu wechseln und eine neue Eingabe zu tätigen...
--
DiTech postete:
Sie haben offensichtlich 7mal mit dem Goldadler positive Erfahrung gemacht. Bei dieser Menge an Glück sollten Sie Lotto spielen.

GHF Watcher 1.2 - Firefox Erweiterung für Geizhals User
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
..................
Re(16): ach ja, noch 3 Punkte, schnucki:
18.04.2006, 10:56:25
Das mit farblich hinterlegen stimmt wirklich oft und hilft oft viel - nur net
hier.

Denn abhängig von der Eingabe will ich eben einen Request an die DB auslösen,
die die Detaildaten holt und den Benutzer weiterführt...


Auch da gibts weitaus benutzerfreundlichere Methoden...als Beispiel nenn ich dir mal, wie es bei einer meiner Anwendungen läuft:

Sobald der Benutzer Daten ins Feld eingibt, wird dieses mit jedem Tasten druck überprüft, und solange Daten drinstehen, die nicht korrekt sind, bleibt das Feld rot hinterlegt.
Sind jetzt genug/die richtigen Zeichen im Feld, wird es grün bzw. gar nicht hinterlegt, gesperrt, und dann der Request ausgeführt.
Sobald der Request beendet ist, wird das Feld wieder entsperrt.

Auf die Art braucht der Benutzer noch nicht mal das Formular abzusenden, geht also noch komfortabler.

Natürlich ist der Workaround schnell gebaut, nur ist das unter FF stressig.
Alle Fehler, die in der Beantwortung des AJAX-Requests auftreten, zeigt er in
seiner Javascript-Console net an - er bricht einfach ab. Das ist /mühsam/.
Genauso das Workaround-Bauen.... Jeder für sich kostet Zeit.


Aus Sicht des Entwicklers ist es mühsam, jedoch hätte es keinen sinn, diese Fehler in der Console anzuzeigen.
Die Funktion xmlHttpRequest selbst liefert genug Fehlercodes zurück, die du selbst auswerten, und dem Anwender präsentieren musst.
Oder kennst du einen Anwender, der ständig die JS-Console offen hat, um sich über seine Falscheingaben zu informieren?

Ans Workaround bauen wirst du dich wohl oder übel gewöhnen müssen.
Und das sag ich nicht als Verteidung für den FF, sondern das gilt für alle Browser - Probleme mit der Kompatibilität wirst du immer haben, egal mit welchem Browser, und das ist es, was diesen Job mühsam und zeitaufwendig macht.
Mit der Zeit lernst du die Fehler der Browser kennen und zu umgehen; ganz besonders wird dir das auffallen, wenn du intensiven gebrauch von CSS machst.

Dann musst du plötzlich gewisse Hacks einsetzen, damit die Seiten im IE überhaupt angezeigt werden - als Stichwort nenn ich dir nur mal "Peekaboo".
Sobald du 2 Ebenen hast, die verschachtelt sind und ein floating aufweisen, zeigt der IE auf der halben Website plötzlich keinen Text mehr an.
Einfach so, ohne Sinn, der Text ist einfach weg, nach einem F5 ist er plötzlich wieder da - bis zum Nächsten Klick auf der Seite.
Gibt man dann ein line-height: im CSS-Body an, wird der Text plötzlich angezeigt - aber komm da erst mal drauf.

Der Bug im Box Model des IE dürfte fast jedem bekannt sein - der IE berechnet Ebenen mit Margin/Padding/Border/Width/Height/ falsch, zeigt alles zu groß an.
Um das zu umgehen, müssen wirklich übelste Hacks verwendet werden - da muss mit absichtlich falschen CSS-Attributen im Speicher des IE herumgepfuscht werden, damit alles klappt.

Den Alert wollte ich also größtenteils zum Debuggen - weil die
Javascript-Console eben bei Fehlern als Antwort auf XMLHttpRequests nix
anzeigt. Öde, daß der dann auch net geht.


Zum Debuggen hab ich immer noch alert() verwendet, und es gab bisher keine Situation, wo das nicht funktioniert hat. Du hast da also irgendwo den "Hund drin".

Das mit dem focus() ist lästig - so wie wohl noch vieles, über daß ich beim FF
stolpern werde. Derzeit habe ich ein Problem, daß ein focus() auf Inputboxen
zwar klappt, aber manchmal kein blinkender Cursor in der inputbox ist.
Eingeben kann man trotzdem. Eine Ahnung, wie ich an dem Bug vorbeikomme ?


Wie im vorvorigen Absatz erwähnt - da wirst du noch über so manches bei jedem Browser stolpern.
Den von dir erwähnten Bug kenne ich nicht - aber nachdem du eine veraltete Version verwendest, hats nicht viel Sinn, darüber zu diskutieren.
--
DiTech postete:
Sie haben offensichtlich 7mal mit dem Goldadler positive Erfahrung gemacht. Bei dieser Menge an Glück sollten Sie Lotto spielen.

GHF Watcher 1.2 - Firefox Erweiterung für Geizhals User
18.04.2006, 10:57 Uhr - Editiert von Dr. Watson, alte Version: hier
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung