[Troll Inside] Opera me les brise, et vous ?

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

12 juin 2005, 18:08

J'essaie désespérément de faire des sites qui se comportent de la même manière sur tous les navigateurs. En général j'y arrive pour tous sauf Opera... Même Safari me pose moins de problème.

Dernier "truc qui gonfle" en date : sa gestion du cache hyper-agressive, et surtout dans le cas d'XmlHttpRequest (quand on a une version qui l'implémente correctement*).


J'ai implémenté un petit Ajax maison, au final j'ai un script "server.php" qui marche ainsi:
server.php?call=ecritFichier&p[]=TEXTE écrit "TEXTE" dans "fichier.txt", et affiche "1" ou "0" selon la réussite ou l'échec de l'opération.
server.php?call=litFichier lit le contenu de "fichier.txt" et l'affiche.

Me voici fièrement avec un champ et 2 boutons "Lire" et "Ecrire" (le contenu du champ dans le texte).
Si j'ouvre ça dans IE/DeepnetExplorer/FireFox/Netscape/AOL/Safari/(et peut-être même d'autres), ça fonctionne parfaitement. Mais si j'ouvre ce satané Opéra....

J'arrive sur la page
Je clique sur "Lire", oh je vois le contenu de mon fichier (mettons "bidule").
Je tape "machin" dans le champ.
Je clique sur "Ecrire", oh miracle, il m'affiche "bidule" ce gland...
Dans le doute je re-clique sur "Lire" il persiste à m'afficher "bidule".
Alors je recharge la page et je re-re-clique sur "Lire" : "bidule"...
J'ouvre un nouvel onglet sur la même page, je clique sur "Lire" : "bidule".
Là un terrible doute m'assaille : je l'ai bien modifié ce fichier ?
Alors je vais voir "fichier.txt" : "machin".

Donc là j'ai décidé que je n'essaierai plus d'optimiser pour Opera, j'en ai vraiment plein le cul :)


Cependant, si quelqu'un a un semblant de solution, qu'il me la donne, je lui enverrai peut-être même un bonbon lutti par la poste.
Si vous voulez tester : http://naholyr.free.fr/XHR/
Le fichier modifié est http://naholyr.free.fr/XHR/fichier.txt

Et qu'on ne vienne pas me dire qu'XmlHttpRequest est trop jeune, tous les autres navigateurs modernes l'implémentent parfaitement. Vraiment dommage, parce qu'à part ça (et sa gestion boiteuse des CSS, et sa facheuse tendance à freezer sous Windows, et sa fichue barre de pub, et ... ah non ça doit être tout) je l'aime bien ce navigateur.


(*) Oui parce que "de base" avec le code standard pour utiliser une fonction de callback avec un objet XmlHttpRequest "conn"

Code : Tout sélectionner

conn.onreadystatechange = function() { if (conn.readyState == 4 && conn.status == 200) { // Si une fonction de callBack a été définie if (typeof callBack == "function") { callBack(callerObj); return; } } };
môssieur applique 2 fois la fonction de callback -_-'
Obligé de se trimballer une variable pour savoir si on a déjà appelé la fonction de callback ou non... Bref...

ViPHP
ViPHP | 1024 Messages

12 juin 2005, 18:50

Cependant, si quelqu'un a un semblant de solution, qu'il me la donne, je lui enverrai peut-être même un bonbon lutti par la poste.
Si vous voulez tester : http://naholyr.free.fr/XHR/
Le fichier modifié est http://naholyr.free.fr/XHR/fichier.txt

Et qu'on ne vienne pas me dire qu'XmlHttpRequest est trop jeune, tous les autres navigateurs modernes l'implémentent parfaitement. Vraiment dommage, parce qu'à part ça (et sa gestion boiteuse des CSS, et sa facheuse tendance à freezer sous Windows, et sa fichue barre de pub, et ... ah non ça doit être tout) je l'aime bien ce navigateur.
peut être qu'opéra est trop jeune?
(ok je sors!)

A+

Pascal

Mammouth du PHP | 19672 Messages

12 juin 2005, 18:55

J'ai fait un test sur la première adresse avec Opera 7.23, c'est effectivement désepérant:
Erreur lors de la création de l'objet
new XMLHttpRequest()

[Error:
name: ReferenceError
message: Statement on line 19: Reference to undefined variable
No such variable 'XMLHttpRequest'
Backtrace:
Line 19 of linked script http://naholyr.free.fr/XHR/lib/XHRConnection.js
conn = conn;
Line 25 of linked script http://naholyr.free.fr/XHR/lib/tightajax.js
this.xhr = new XHRConnection(pdebug);
Line 4 of inline#1 script in http://naholy.free.fr/XHR/
var client = new TAServer("server.php", true);
]
Erreur lors de la tentative de création de l'objet
new ActiveXObject("Microsoft.XMLHTTP")

[Error:
name: ReferenceError
message: Statement on line 24: Reference to undefined variable:
No such variable 'ActiveXObject'
Backtrace:
Line 24 of linked script http://naholyr.free.fr/XHR/lib/XHRConnexction.js
conn = conn;
Line 25 of linked script http://naholyr.free.fr/XHR/lib/tightajax.js
this.xhr = new XHRConnection(pdebug);
Line 4 of inline#1 script in http://naholy.free.fr/XHR/
var client = new TAServer("server.php", true);
]
Erreur lors de la tentative de création de l'objet
new ActiveXObject("Msxml2.XMLHTTP")

[Error:
name: ReferenceError
message: Statement on line 29: Reference to undefined variable:
No such variable 'ActiveXObject'
Backtrace:
Line 29 of linked script http://naholyr.free.fr/XHR/lib/XHRConnexction.js
conn = conn;
Line 25 of linked script http://naholyr.free.fr/XHR/lib/tightajax.js
this.xhr = new XHRConnection(pdebug);
Line 4 of inline#1 script in http://naholy.free.fr/XHR/
var client = new TAServer("server.php", true);
]
Impossible de concatcter le serveur
À la suite de quoi il m'affiche un petit formulaire (quand même)

Du coup j'ai non seulement pas osé essayer ton formulaire, mais quant à ouvrir l'autre url que tu présentes, ce serait peut-être faire preuve carrément d'ambitions sans limites :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 287 Messages

12 juin 2005, 19:21

t'utilises quelle version d'opéra?

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

12 juin 2005, 20:31

t'utilises quelle version d'opéra?
8.0, j'avais la beta, donc j'ai installé la dernière version cet après-midi même :)

Eléphant du PHP | 287 Messages

12 juin 2005, 20:41

bon courage alors :wink:
sinon c'est voulu de ne pas encore gérer ie?

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

12 juin 2005, 20:51

bon courage alors :wink:
sinon c'est voulu de ne pas encore gérer ie?
Non ça c'est une légère coquille dans le test :)
C'est juste qu'IE ne gère pas les appels asynchrones, et j'ai mis du sync et async dans la même page (pour tester). L'alerte au départ c'est le mode débug activé. Ici ça va mieux pour lui théoriquement : http://naholyr.free.fr/XHR/indexIE.html

Eléphant du PHP | 287 Messages

12 juin 2005, 20:59

c'est bon aussi chez moi vu qu'il m'affiche plus une vilaine boîte d'erreur en rapport à XmlHttpRequest quand la page se charge(ie6).