Forum: Italian Ruby user group Problemi con Safari

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7d7971e6f058372d8c22a17a0619b11f?d=identicon&s=25 Michele Conconi (michele)
on 2008-10-21 16:34
Ciao a tutti.

Sto programmando un sito. Lo trovate all'indirizzo

http://diem1.ing.unibo.it/meccanica/

Funziona come dovrebbe su Firefox e su IE, ma Safari (e anche Opera) mi
danno dei problemi. In pratica provate a cliccare sulla voce staff (o
Research) nel menu di sinistra più volte. Metre Firefox produce sempre
lo stesso risultato, Safari presenta una pagina aleatoria, si potrebbe
usare per il superenalotto! Non riesco a capire il problema.

In pratica utilizzo una funzione Javascript che prima mi carica una
pagina con un elenco ordinato di <div> e poi li riempie con alcune
pagine .xml a seconda degli argomenti passati alla funzione.

Sono impazzito a cercare un debugger per Safari, alla fine ho installato
quello con Webkit. Però mi dà solo tre errori nella pagina iniziale, e
nessun errore qunado clicco su Staff. Non riesco a capire.

Un altro fenomeno strano e che, se carico la pagina, poi vado in un
altro indirizzo e quindi torno indietro, spesso il sito funziona come
dovrebbe. Se aggiorno però siamo daccapo.

Per favore aiutate un povero inetto del web! Grazie mille

Michele
7daea92c28be2e85196a4f6dfdb2f689?d=identicon&s=25 Claudio Petasecca Donati (etapeta)
on 2008-10-21 17:06
Michele Conconi wrote:
>
> In pratica utilizzo una funzione Javascript che prima mi carica una
> pagina con un elenco ordinato di <div> e poi li riempie con alcune
> pagine .xml a seconda degli argomenti passati alla funzione.
>
Sei sicuro di usare soltanto funzioni Prototype per accedere al DOM?

Ho visto che ogni tanto, per esempio, usi

$(elenco[j]).innerHTML = str;
invece di
$(elenco[j]).update(str);

o

$(prevPage).className = '';
al posto di
$(prevPage).removeClassName('...');

Non sono certo che il problema sia in queste particolari funzioni, ma
esaminare tutto il tuo codice mi richiederebbe un tempo che non ho.

In particolare, stai attento all'uso diretto di attributi degli elementi
DOM.
A me hanno spesso causato problemi di compatibilita'.

Claudio
7d7971e6f058372d8c22a17a0619b11f?d=identicon&s=25 Michele Conconi (michele)
on 2008-10-22 10:25
Intanto grazie per avermi risposto. Come avrai capito sono un
autodidatta alle primissime armi, percui non ho capito subito il senso
dei tuoi commenti. Però stimolato ho cercato un pò in giro.

Ho aggiornato il Prototype.js all'ultima versione e introdotto le
modifiche che mi hai suggerito. E' interessante che non sia cambiato il
comportamento del sito ne' su Firefox ne' su Safari.

Guardando meglio il WebInspector di Safri ho visto che il problema è il
seguente. Io ho un elenco di div, tipo

<div id="Intro"></div>

<div id="FullTitle"></div>
<div id="Full1"></div>

<div id="AssTitle"></div>
<div id="Ass1"></div>
<div id="Ass2"></div>...

e una funzione di Javascript che li dovrebbe riempire con i
corrispettivi files. Il problema è che in alcuni div non viene proprio
caricato nessun contenuto, senza nessuna ripetitibilità. Da cosa
potrebbe dipendere secondo te?

Il codice in question è tipo

setContentInList(id1,subMenu.AssistantProfessor['0'],'AssTitle');
setContentInList(id1,subMenu.AssistantProfessor['1'],'Ass1');
setContentInList(id1,subMenu.AssistantProfessor['2'],'Ass2');...

dove

function setContentInList(id1,A,B)
{
  var url = 'xml/'+id1+'/'+A+'.xml';
  var comp = function(t){setMyContent(t, B);}
  var error = function(){alert('errore');}
  var myAjax = new Ajax.Request(url,{method:'get',onSuccess:comp,
onFailure:error});
}

e

function setMyContent(t, id){
  var str = t.responseText;
  var el = $(id).update(str);;
}

Ti ringrazio fin d'ora per quasiasi suggerimento mi potrai dare.

Michele
7de465f222e6a9c7fe658e370d0bfe05?d=identicon&s=25 Paolo Montrasio (pmontrasio)
on 2008-10-27 11:00
Michele,

il problema potrebbe essere un po' ovunque.

Non so come si faccia con WebInspector, ma hai provato a guardare il
contenuto delle richieste ricevute dal server e quello delle risposte?
Il punto dove estrai il responseText sembra l'ideale per fare del
debugging. Tra l'altro se googli Safari responseText trovi delle cose
interessanti, come ad esempio
http://www.webmasterworld.com/javascript/3678579.htm
Può anche darsi che Safari sia particolarmente schizzinoso sui contenuti
che riceve e li butti via se c'è qualcosa che non va.

E casomai quella pista non portasse da nessuna parte, facciamo un passo
indietro: le richieste arrivano al server? Controlla nei log.

Ciao
Paolo
This topic is locked and can not be replied to.