| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
grinsekatze Mitglied
|
Pseudoajax: Problem mit Opera |
|
|
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 |
|
  |
Werner Homepage-Total.de Moderator

|
|
| 23 Jul 2009 16:11 |
|
 |
grinsekatze Mitglied
|
|
| 23 Jul 2009 23:44 |
|
 |
Werner Homepage-Total.de Moderator

|
 |
|
|
| 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 |
|
 |
grinsekatze Mitglied
|
|
| 24 Jul 2009 20:12 |
|
 |
Werner Homepage-Total.de Moderator

|
 |
|
|
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 |
|
 |
grinsekatze Mitglied
|
onerror mit Funktion ist nicht FF kompatibel |
|
|
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.
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!
Bei meiner Funktion macht Opera den "Dopplungsfehler"! Will heissen, er schreibt die Meldung 2x... |
|
|
|
| 25 Jul 2009 13:01 |
|
 |
Werner Homepage-Total.de Moderator

|
 |
|
|
Von einer JavaScript Monsterfunktion halte ich auch nichts.
Server-seitig ist es viel einfacher mit file_exists vor allem Browser-Kompatibel
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 |
|
 |
grinsekatze Mitglied
|
Ich glaub' ich hab die Lösung |
|
|
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
PS: Ach ja, bevor ich es vergesse:
Die Fehlerkonsole bei FF springt gerade nicht bei jedem fehlenden Bildchen an! |
|
|
|
| 26 Jul 2009 10:50 |
|
 |