Pseudoajax: Problem mit Opera


 
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Hilfe für Webmaster -> Javascript
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
grinsekatze
Mitglied

BeitragPseudoajax: Problem mit Opera Antworten mit Zitat

Hallo liebe Leute!

Ich habe heute ein Javascript Problem, dass komischer Weise nur bei Opera auftritt. Ich verwende Pseudoajax1.3 um eine kleine Volltextsuche zu realisieren. Dabei werden die via GET übertragenen Variablen an ein PHP Back-End übergeben und ausgewertet. Das funktioniert prima. das Problem liegt jedoch darin, dass ich (wie bei Ajax auch) die Seite nicht verlasse. Deswegen ist mein Suchformular (mit Layout via CSS) auch ohne "formaction":

Code:

<form class="searchform" action="" method="get" enctype="text/plain">
<input class="input" type="text" id="q" name="q" maxlength="62" value="">
<input class="submit" type="image" id="submit" src="spacer.gif">
</form>


Da passiert bei Opera gar nix! Es wird einfach nix übergeben!
Alle anderen Browser funzen (IE 6-8, FF, Safari sogar Netscape ab 7).

Wo liegt das Problem?

Am JS liegt's nicht, denn wenn ich die Variablen in die Adress/Explorer-Leiste manuell eingebe läuft alles wunderschön!

Vielen Dank für Eure Tipps!
22 Jul 2009 18:52
Benutzer-Profile anzeigen Private Nachricht senden
axinio Internet Marketing
Werner
Homepage-Total.de
Moderator

Beitrag Antworten mit Zitat

Ich weis leider nicht woran es liegt,
aber einen Fehler im Formular habe ich gefunden Smile

Code:
<input class="input" type="text" id="q" name="q" maxlength="62" value="">

Und zwar dürfen id und name nicht den gleichen Inhalt haben.

_________________
Bei Fragen oder Fehlermeldungen - Bitte ausführlichen Code posten!
Wie man Fragen richtig stellt
23 Jul 2009 16:11
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grinsekatze
Mitglied

BeitragVielen Dank, aber das war's nicht... Antworten mit Zitat

Hallo Werner,

vielen Dank für die Korrektur: id und name sind natürlich nicht valide.
- Mein Fehler!

Aber daran liegt's nicht. Ich hab' aber gerade rausgefunden woran es liegt.

Opera kommt nicht mit dem

Code:
enctype="text/plain"


zurecht.

Wenn ich das weglasse überträgt er die Variablen.
(Manchmal hilft ein Blick in den Quellcode der Opera-Homepage Smile
Die benutzen es bei Ihrem Such-Formular nämlich auch nicht...)

Ist doch aber komisch, oder?

Vielleicht weißt Du warum?
23 Jul 2009 23:44
Benutzer-Profile anzeigen Private Nachricht senden
Werner
Homepage-Total.de
Moderator

Beitrag Antworten mit Zitat

Zitat:
Ist doch aber komisch, oder?

Sehr komisch, Obwohl Opera den Acid-3-Test bestanden hat!!

Hast du Probleme damit, das auf der Empfänger-Seite
die Formulareingaben nicht richtig darstellt werden?
Ansonsten würde ich enctype="text/plain" weglassen.

_________________
Bei Fragen oder Fehlermeldungen - Bitte ausführlichen Code posten!
Wie man Fragen richtig stellt
24 Jul 2009 16:55
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grinsekatze
Mitglied

BeitragDas is kein Problem Antworten mit Zitat

Zitat:
Hast du Probleme damit, das auf der Empfänger-Seite
die Formulareingaben nicht richtig darstellt werden?
Ansonsten würde ich enctype="text/plain" weglassen.


Das ist kein Problem, da nur via GET an ein PHP übergeben wird, das ist dabei gleichgültig.
Dargestellt wird im Endeffekt nur das Suchergebnis, und das ist ja unabhängig vom Textformular. Smile
Ich werd's also weglassen.

Aber von Opera bin ich doch enttäuscht...

Das Ding macht mir andauernd Ärger!

Bsp: Beim onerror event des window object

Code:
 <img class="image" src="test.jpg" alt="image" onerror="alert('Kein Bild!')">


funktioniert wunderbar. - Aber wehe ich mache das hier:

Code:
 <img class="image" src="test.jpg" alt="image" onerror="document.write('Kein Bild!')">


dann switcht Opera in ein neue Ebene und präsentiert nix ausser der Fehlermeldung!

FF, KDE inkl. Safari, Chrome stellen es richtig dar.

Zu allem Überfluss kann man dann nicht einmal mehr auf die ursprüngliche Ebene zurück wechseln. Ein einfaches history back funzt da nicht... Da muß man dann schon mehrmals klicken.


@all Übrigens: Für ein funktionstüchtiges "onerror event" mit Text statt alert würde ich sonst was geben!
(Aber nicht mit php.js "echo" oder so, das ist nur murx...)

Wink

Doch nochmal zu Opera: IE6 in rot!
24 Jul 2009 20:12
Benutzer-Profile anzeigen Private Nachricht senden
Werner
Homepage-Total.de
Moderator

Beitrag Antworten mit Zitat

Und warum rufst du mit onerror keine Funktion auf?
Code:
<script type="text/javascript">
function fehler(id) {
 document.getElementById(id).innerHTML = "Kein Bild!";
}
</script>

<span id="1234"><img class="image" src="test.jpg" alt="image" onerror="fehler('1234')"></span>

_________________
Bei Fragen oder Fehlermeldungen - Bitte ausführlichen Code posten!
Wie man Fragen richtig stellt
25 Jul 2009 08:08
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grinsekatze
Mitglied

Beitragonerror mit Funktion ist nicht FF kompatibel Antworten mit Zitat

Daran hab' ich natürlich schon gedacht, aber "onerror mit Funktion" ist nicht FF 1.5/Netscape/K-Meleon kompatibel. (Es wird bei Deiner Funktion nur "image" ausgegeben). Bei FF 2.x bin ich mir nicht sicher. Ab FF 3.0 (sowie KDE/Safri/Chrome) geht das natürlich. Bei Opera ab 8 natürlich auch.

Da aber immer noch so viele alte FFs und Netscapes da draussen rumschwirren wäre ich schlussendlich schlechter dran, als "nur" nicht Opera kompatibel zu sein.

Da müsste man die Funktion schon browserspezifisch abändern, und hätte dann eine Monsterfunktion, die für die einfache Aufgabe, sage wir mal: "zu vista-mässig" wäre. Ganz abgesehen davon, dass wir hier von nur einem Bildchen ausgehen. Was aber, wenn mehrere/viele Bilder mit Fehlerfunktion ausgestattet werden sollen, - etwa eine Thumb-Gallerie?

Da wird es dann noch komplizierter...

Mein Lösungsansatz wäre deshalb von onerror gänzlich abzusehen und einen völlig neuen Ansatz zu wählen, der universaler sein müßte, nicht nur universaler in Punkto Browserkompatibilität, sondern auch universal od. besser global für alle Seitenfehler (nicht nur alle images) gelten müsste.
Das kann dann auch ruhig ein richtiger Framework sein. Interessanter Weise bringt Safari so etwas (unter Fenster/Aktivität) von Hause aus gleich mit. Dort wird detailliert jeder Fehler gelistet. -Natürlich ohne individuelle Fehlermeldung. Smile

Also wie gesagt:
Code:
document.getElementById(id)
in Verbindung mit onerror ist keine wirkliche Lösung.

Ich selbst verwende eine ähnliche (aber noch weniger brauchbarere) Funktion:

Code:

<script type="text/javascript">

 function addTextNode()
{
var newtext = document.createTextNode("Kein Bildchen!");
var para = document.getElementById("1234");
para.appendChild(newtext);

}
</script>

<span id="1234"><img class="image" src="bild.gif" alt="image" onerror="addTextNode()"></span>


Deine Funktion ist aber wenigstens Opera 8x kompatibel! Very Happy
Bei meiner Funktion macht Opera den "Dopplungsfehler"! Will heissen, er schreibt die Meldung 2x...
25 Jul 2009 13:01
Benutzer-Profile anzeigen Private Nachricht senden
Werner
Homepage-Total.de
Moderator

Beitrag Antworten mit Zitat

Von einer JavaScript Monsterfunktion halte ich auch nichts.
Server-seitig ist es viel einfacher mit file_exists vor allem Browser-Kompatibel Smile

Das überprüfen mit document.images.length wäre auch eine Möglichkeit,
es zählt aber nicht vorhandene Bilder auch mit...


Zitat:
Das kann dann auch ruhig ein richtiger Framework sein. Interessanter Weise bringt Safari so etwas (unter Fenster/Aktivität) von Hause aus gleich mit. Dort wird detailliert jeder Fehler gelistet. -Natürlich ohne individuelle Fehlermeldung.

Firefox auch und zwar in der Fehlerkonsole.

_________________
Bei Fragen oder Fehlermeldungen - Bitte ausführlichen Code posten!
Wie man Fragen richtig stellt
25 Jul 2009 21:20
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grinsekatze
Mitglied

BeitragIch glaub' ich hab die Lösung Antworten mit Zitat

Ich glaub' ich hab die Lösung!

Wie ich ja bereits oben angeführt habe ist Deine Funktion

Code:

<script type="text/javascript">
function fehler(id) {
 document.getElementById(id).innerHTML = "Kein Bild!";
}
</script>


in Verbindung mit "img onerror" nicht FF 1.5/K-Meleon/Netscape tauglich.
Die unterstützen img onerror + Funktion nämlich nicht!

Deine Funktion läuft aber super mit IE/FF 3x/KDE/Safari/Chrome/Opera.

Nun habe ich festgestellt, dass FF1.5/K-Meleon/Netscape sehr wohl Deine Funktion akzeptieren, wenn Sie "js onerror" aufgerufen wird!

Deshalb meine Lösung (ich weiß, sie ist alles andere als elegant):

Code:

<script type="text/javascript">
function fehler(id) {
 document.getElementById(id).innerHTML = "Kein Bild!";
}
</script>

<div id="1234">
<!-- onerror für IE, FF 3x, Safari, Chrome, Opera -->
<img class="image" src="bildchen.gif" alt="" onerror="fehler('1234')">
<!-- onerror für FF 1.5, K-Meleon, Netscape -->
<script src="bildchen.js" type="text/javascript" onerror="fehler('1234')">
</div>


Die Test-Datei "bildchen.js" enthält:
Code:

document.write('Bild da!');


Jetzt melden IE/FF 3x/KDE/Safari/Chrome/Opera bei fehlendem Bild:

"Kein Bild!"

und FF 1.5/K-Meleon/Netscape

bei vorhandener Test-JS-Datei:

"Bild da!"

Du siehst, worauf ich hinaus will:

1. Zu jedem Image wird eine (gleichnamige) aber Leere(!) JS-Datei angelegt.
2. Falls das Datei-Pärchen fehlt wird immer und browser-übergreifend die Fehlermeldung aus "fehler()" ausgegeben.

Nachteil: Man benötigt immer zwei Dateien!


Die Grinsekatze Very Happy

PS: Ach ja, bevor ich es vergesse:
Die Fehlerkonsole bei FF springt gerade nicht bei jedem fehlenden Bildchen an!
26 Jul 2009 10:50
Benutzer-Profile anzeigen Private Nachricht senden
axinio Internet Marketing
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Webmaster Forum -> Hilfe für Webmaster -> Javascript Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  

Ähnliche Beiträge
Thema Webmaster Forum Antw. Autor Verfasst am
Keine neuen Beiträge Problem bei Berechnung bzw Ausgabe PHP / MySQL 1 Gast 24 Sep 2011 12:32 Letzten Beitrag anzeigen
Keine neuen Beiträge Footer CSS Problem mit Breite CSS 2 jrothhardt 27 Feb 2011 21:29 Letzten Beitrag anzeigen
Keine neuen Beiträge Problem mit Auswahlliste Javascript 4 Arenicola 31 Jan 2011 20:34 Letzten Beitrag anzeigen
Keine neuen Beiträge Problem mit kopieren oder umbenennen PHP / MySQL 4 Werner 12 Dez 2010 09:57 Letzten Beitrag anzeigen
Keine neuen Beiträge Problem mit php-Menü PHP / MySQL 1 Patrick 23 Nov 2010 13:49 Letzten Beitrag anzeigen