Montag, 27. September 2010, 12:04
IE und Buttons in Formularen
Wie kann ein Browser nur so ignorant sein:
http://www.fourmilab.ch/fourmilog/archives/2007-03/000824.html
Deshalb haben wir das in unserem Forward-DNS-Editor auch gleich mal angeprangert:
http://www.fourmilab.ch/fourmilog/archives/2007-03/000824.html
Deshalb haben wir das in unserem Forward-DNS-Editor auch gleich mal angeprangert:
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Jürgen Jaritsch
Habe das damals so gelöst, dass ich per Browserweiche die 'brauchbaren' Browser mit dem gewünschten Formular gefüttert habe und die 'unbrauchbaren' (IE, Netscape, Opera, etc) mit einem 08/15 Formular beglückt habe. Darüber ein entsprechender Hinweis, dass aufgrund des verwendeten Browsers die Ansicht abweichen kann.
Konnten alle gut damit leben . Denk mal drüber nach.
pashé
Markus Hansen
Manuel Schmitt (manitu)
Und: Wir richten unsere Produkte bewusst an professionelle Anwender. Wer den IE einsetzt und trotz dieser "Bugs" darauf beharrt, gehört nicht zu unserer Zielgruppe.
Wer den IE mag, ebenso aber unser Tool nutzen möchte, und zudem professionell arbeitet, hat vermutlich mehr als einen Browser installiert. Ergo kein Problem
Sebastian Marsching
Man legt dann einfach einen Kompatibilitätslayer in die Formulardaten-Verarbeitung, der aus dem Button-Namen die Werte extrahiert und die entsprechenden Parameter erzeugt.
Um (ganz schamlos) etwas Werbung zu machen - Im OSS-Web-Framework Pustefix (http://www.pustefix-framework.org/) ist das seit Jahren implementiert, so dass man in einer Seiten-Definition innerhalb eines Buttons beliebige Parameter-Wert-Paare angeben kann. Das Framework übernimmt dann die Kodierung in und die Extraktion aus dem Button-Namen.
Genau genommen werden nicht die Informationen im Button-Namen kodiert, sondern der Button-Name über eine generierte Id mit einen Hidden-Formular-Feld korreliert, das dann die Informationen enthält. Ein relativ einfacher Ansatz, der hervorragend funktioniert.
Wenn ihr an der Implementierung interessiert seit: Der für den View relevante Code, welcher die Erzeugung des Hidden-Feldes übernimmt befindet sich in http://dev.pustefix-framework.org/browser/trunk/pustefix-core/src/main/resources/PUSTEFIX-INF/xsl/forminput.xsl ab Zeile 259 bzw. wird vom Button-Template, das ab Zeile 324 beginnt in Zeile 364 aufgerufen.
Die Logik zur Formulardaten-Verarbeitung befindet sich im wesentlichen in http://dev.pustefix-framework.org/browser/trunk/pustefix-core/src/main/java/de/schlund/pfixxml/PfixServletRequestImpl.java ab Zeile 422.
Da das LGPL-Code ist, dürfte abgucken in Ordnung sein.
Sebastian Marsching
Auch ich hasse, wie der Internet-Explorer Standards nicht korrekt implementiert. Gefühlte 50% des hässlichen Codes in einem Web-Framework stammen von Workarounds um diverse Bugs zu umgehen. Der genannte Bug ist allerdings noch einer von den leicht umgehbaren.
Gemeiner ist ein Bug in der HTTP-Implementierung einer Microsoft-Anwendung, welcher dafür sorgt, dass Cookies in bestimmten Fällen gespeichert und mitgesendet werden und in anderen Fällen nicht, wohlgemerkt innerhalb der gleichen Sitzung. Wenn man dann Code hat, der prüft ob Cookies unterstützt werden (oder für das Session-Management ausschließlich die URL verwendet werden kann), kann dies zu sehr lustigen Fehlern führen. Natürlich gibt es auch für dieses Problem einen Workaround, aber der ist um einiges hässlicher als der Workaround für Werte in Abhängigkeit vom gedrückten Button.
Faabilein
Wenn die IE Nutzer aufeinmal nur noch 20% des (nicht-pornografischen Teil) des Internets ordentlich betrachten können, wechseln die ganz hops den Browser
Ich vertrete knallhart die Meinung, auf solche Workarounds zu verzichten. Zumal es auch einiges an Geld des Kunden spart, bei einem Satz von 60€/h für Webentwicklung
Oder würdet ihr einen Drucker kaufen, bei dem das Verwenden von DIN-(A4) Papier nur durch einen Zusatz möglich wäre?
Von daher kann ich Manitu schon gut nachvollziehen
Manuel Schmitt (manitu)
Sebastian Marsching
Bei einem rein privaten Projekt, würde ich wahrscheinlich auch auf einen solchen Workaround verzichten.
Wenn man mit dem Produkt aber Geld verdienen will, dürfte es meistens billiger kommen einen Workaround zu bauen, als die (potentiellen) Kunden, die den IE benutzen, zu verlieren. Das war zumindest der Grund, warum dieser Workaround bei meinem damaligen Arbeitgeber in das o.g. Framework eingebaut wurde. Das ist aus meiner Sicht auch einer der wichtigsten Gründe für ein Framework, nämlich solche Workarounds an zentraler Stelle einbauen zu können, so dass alle Applikationen davon profitieren, ohne dass sich der einzelne Anwendungsentwickler noch einmal damit befassen muss.
Ich kann aber die Gründe, warum man einen solchen Workaround nicht einbauen will, sehr gut nachvollziehen und will diese Entscheidung nicht werten. Letztendlich betrifft mich diese Entscheidung auch nicht, und umgekehrt würde ich mir von anderen auch nicht hereinreden lassen, wie ich meine Firma führe.
Ich bin einfach nur über den Satz "Aus technischen Gründen können wir von unserer Seite aus keine Änderungen vornehmen, um diesen Editor kompatibel zu gestalten" gestolpert und bin der Meinung, er müsste korrekterweise lauten: "Aus organisatorischen Gründen wollen wir von unserer Seite aus keine Änderungen vornehmen, um diesen Editor kompatibel zu gestalten." - vielleicht mit dem Zusatz "Benutzen Sie doch einfach einen Browser, der nicht jeden Web-Standard völlig verdreht interpretiert."
Hobelbruder
Otto
Thomas Hunziker
Jens
kann es sein, das es Firefox ab Version 4 das Gleiche Problem gibt ????
Ich habe da ein Problem mit einem Formular, das mit FF < Version 4 funktioniert. IE bis Version 7 zeigt das im Blog erwähnte Verhalten. FF ab Version 4 dann auch.
Gruß,
Jens