HighDots Forums  

modifica template preformattato da server

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss modifica template preformattato da server in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
zachille
 
Posts: n/a

Default modifica template preformattato da server - 12-12-2007 , 10:45 AM






Ho un template grafico preformattato a tabelle. Ogni tabella e'
identificata da una classe univoca. Mi trovo nella necessita di
intervenire sul template in modo da adattarlo al mio layout di
visualizzazione agendo lato-client.
Ovviamente non posso farlo configurando il file che genera il template
in quanto questo viene generato dal server e io non ho accesso a tale
configurazione.

Ogni tabella, quindi, puo' essere leggermente adattata identificandola
tramite la classe univoca e specificando un css che agisce su tutte le
tabelle e, in ogni caso, non risolvo il mio problema.

piu' o meno la situazione semplificata e' questa:

<a name="pippo"></a>
<table class="bellatabella" width="100%">
<tr>
<td>...</td>
</tr>
</table>

<a name="pluto"></a>
<table class="bellatabella" width="100%">
<tr>
<td>...</td>
</tr>
</table>

l'unico elemento che identifica univocamente ogni tabella e'
l'attributo name di <a>.
Vorrei capire se attraverso javascript e dom e' possibile scorrere il
documento e agire solo sulle tabelle che mi interessano. Quindi una
funzione che sfrutti getElementsByName, e agisca magari sull'attributo
width della tablella "pluto" tralasciando il resto.

So' di non essere stato chiarissimo ma vado di fretta e se si puo'
fare do' maggiori dettagli... Ciao. Grazie.

Reply With Quote
  #2  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: modifica template preformattato da server - 12-13-2007 , 02:47 AM






Il Wed, 12 Dec 2007 08:45:57 -0800 (PST), zachille ha scritto:

Quote:
piu' o meno la situazione semplificata e' questa:
a name="pippo"></a
table class="bellatabella" width="100%"

a name="pluto"></a
table class="bellatabella" width="100%"

l'unico elemento che identifica univocamente ogni tabella e'
l'attributo name di <a>.
Vorrei capire se attraverso javascript e dom e' possibile scorrere il
documento e agire solo sulle tabelle che mi interessano. Quindi una
funzione che sfrutti getElementsByName, e agisca magari sull'attributo
width della tablella "pluto" tralasciando il resto.
spunto:
con getElementsByTagName("table") becchi le tabelle:
http://developer.mozilla.org/en/docs...mentsByTagName
se la struttura è quella con previousSibling dovresti beccare l'elemento
precedente (il tag a):
http://developer.mozilla.org/en/docs...reviousSibling

--
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
B.M.


Reply With Quote
  #3  
Old   
zachille
 
Posts: n/a

Default Re: modifica template preformattato da server - 12-13-2007 , 06:28 AM



On 13 Dic, 09:47, Cristiano Larghi <c.larghi_NOS... (AT) editaliasrl (DOT) it>
wrote:
Quote:
spunto:
con getElementsByTagName("table") becchi le tabelle:
http://developer.mozilla.org/en/docs...mentsByTagName
se la struttura è quella con previousSibling dovresti beccare l'elemento
precedente (il tag a):
http://developer.mozilla.org/en/docs...reviousSibling
Questo è stato il primo approccio che ho tentato. Cerco di spiegare
meglio la situazione che è un po' contorta.
Il file generato dal server è un html che istanzio nella mia pagina
tramite l'oggetto xmlhttprequest attraverso un uri.

Ho pensato che un modo per modificare un template preformattato poteva
essere quello di sfruttare delle propietà del DOM.

Credo esista una possibilità alternativa. Cioè istanziare con
javascript un XSLT tramite XmlHttpRequest.
Con questo approccio si potrebbe pensare di creare nodi direttamente
all'interno del file generato dal server prima che avvenga la
visualizzazione sul browser.

Ad esempio, inserendo il namespace corretto nell'XSLT potrei
riconoscere il markup (X)HTML , intercettare il nodo <head> e inserire
uno script che sfrutti DOM per modificare il template a mio
piacimento.

E' solo un'idea. Può essere fattibile questo approccio?




Reply With Quote
  #4  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: modifica template preformattato da server - 12-13-2007 , 06:49 AM



Il Thu, 13 Dec 2007 04:28:58 -0800 (PST), zachille ha scritto:

Quote:
Il file generato dal server è un html che istanzio nella mia pagina
tramite l'oggetto xmlhttprequest attraverso un uri.
html = ? solo il body o proprio tutto l'html? e dove lo metti?

Quote:
Credo esista una possibilità alternativa. Cioè istanziare con
javascript un XSLT tramite XmlHttpRequest.
mai provato, cerca in rete (ma a naso la vedo male)

non riesco bene a capire cosa vuoi ottenere, e perché il mio spunto non va
bene.

--
"Ti sei salvato
o sei entrato in banca pure tu?"
A.V.


Reply With Quote
  #5  
Old   
zachille
 
Posts: n/a

Default Re: modifica template preformattato da server - 12-14-2007 , 07:51 AM



On 13 Dic, 13:49, Cristiano Larghi <c.larghi_NOS... (AT) editaliasrl (DOT) it>
wrote:

Quote:
html = ? solo il body o proprio tutto l'html? e dove lo metti?
Carico l'intera pagina html come parametro uri della richiesta
xmlHttpRequest. La pagina viene generata ogni 24 ore dal server. In
modo asincrono genero la richiesta e visualizzo il template
all'interno di un div contenitore.

Quote:
non riesco bene a capire cosa vuoi ottenere, e perché il mio spunto non va
bene.
Sono daccordo che si possa adeguare il template tramite DOM ma, per
farlo, dovrei innestare lo script nella pagina prima che questa venga
visualizzata.
XSLT potrebbe essere una soluzione ma in rete non ho trovato molto.

Praticamente vorrei applicare le modifiche al template prima che la
richiesta XHR venga soddisfatta. Lo so', e' ambiguo, ma nella mia
testa ha una sua logica... spero di aver reso un'idea di quello che
vorrei fare ottenere.





Reply With Quote
  #6  
Old   
Cristiano Larghi
 
Posts: n/a

Default Re: modifica template preformattato da server - 12-14-2007 , 08:03 AM



Il Fri, 14 Dec 2007 05:51:12 -0800 (PST), zachille ha scritto:

Quote:
Carico l'intera pagina html come parametro uri della richiesta
xmlHttpRequest. La pagina viene generata ogni 24 ore dal server. In
modo asincrono genero la richiesta e visualizzo il template
all'interno di un div contenitore.
qua già non capisco: hai un div e *dentro* il div metti nuovamente i tag
html, head etc???

Quote:
Praticamente vorrei applicare le modifiche al template prima che la
richiesta XHR venga soddisfatta. Lo so', e' ambiguo, ma nella mia
testa ha una sua logica... spero di aver reso un'idea di quello che
vorrei fare ottenere.
io non ho capito, sentiamo gli altri.

--
"Run rabbit run
dig that hole, forget the sun
and when at last the work is done
don't sit down, it's time to dig another one"
P.F.


Reply With Quote
  #7  
Old   
zachille
 
Posts: n/a

Default Re: modifica template preformattato da server - 12-14-2007 , 08:07 AM



On 14 Dic, 15:03, Cristiano Larghi <c.larghi_NOS... (AT) editaliasrl (DOT) it>
wrote:

Quote:
Praticamente vorrei applicare le modifiche al template prima che la
richiesta XHR venga soddisfatta. Lo so', e' ambiguo, ma nella mia
testa ha una sua logica... spero di aver reso un'idea di quello che
vorrei fare ottenere.

io non ho capito, sentiamo gli altri.
The example loads using synchronous XMLHTTPRequest both the .xsl
(xslStylesheet) and the .xml (xmlDoc) files into memory. The .xsl file
is then imported (xsltProcessor.importStylesheet(xslStylesheet)) and
the transformation run (xsltProcessor.transformToFragment(xmlDoc,
document)). This allows fetching of data after the page has been
loaded, without initiating a fresh page load.

http://www.soi.city.ac.uk/~sa386/ept...In%20Gecko.htm


Reply With Quote
  #8  
Old   
ZER0
 
Posts: n/a

Default Re: modifica template preformattato da server - 12-14-2007 , 08:27 AM



On Fri, 14 Dec 2007 05:51:12 -0800 (PST), zachille wrote:

Devo essere sincero, non ho ben capito il tuo problema. O meglio,
prima parti con un certo tipo di problematica, e poi ti dirigi in
tutt'altra direzione...

Quotando quindi anche la tua prima problematica:

Quote:
Vorrei capire se attraverso javascript e dom e' possibile scorrere il
documento e agire solo sulle tabelle che mi interessano.
Si, tramite le DOM API.
Ammesso che il documento sia "effettivamente" un documento, e non
una stringa (dato che lo recuperi tramite XHR). In tal caso, devi
usare le regexp (oppure, creare dalla stringa dei nodi effettivi,
agganciando il tutto al document tree).

Ecco, non mi è ben chiaro come siamo passati da questo:

Quote:
Quindi una
funzione che sfrutti getElementsByName, e agisca magari sull'attributo
width della tablella "pluto" tralasciando il resto.
A questo:

Quote:
Sono daccordo che si possa adeguare il template tramite DOM ma, per
farlo, dovrei innestare lo script nella pagina prima che questa venga
visualizzata.
XSLT potrebbe essere una soluzione ma in rete non ho trovato molto.
Immagino che mi manchi un passaggio (e non credo solo a me, visto
che anche Cristiano mi pare perplesso).
Forse non ci è ben chiaro il contesto in cui sei.

Quote:
Praticamente vorrei applicare le modifiche al template prima che la
richiesta XHR venga soddisfatta.
Detta così, è una frase non solo concettualmente errata, ma anche
temporalmente errata.
Come puoi applicare le modifiche a qualcosa che ancora non hai?

Quote:
Lo so', e' ambiguo, ma nella mia testa ha una sua logica...
Sono tutt'orecchi.

--
~ "Chi ci priva della libertà in nome della sicurezza,
non si merita nessuna delle due cose, nè la libertà,
nè la sicurezza." (Henry Adams)



Reply With Quote
  #9  
Old   
zachille
 
Posts: n/a

Default Re: modifica template preformattato da server - 12-14-2007 , 09:46 AM



On 14 Dic, 15:27, ZER0 <zer0.sh... (AT) libero (DOT) it> wrote:
Quote:
On Fri, 14 Dec 2007 05:51:12 -0800 (PST), zachille wrote:

Devo essere sincero, non ho ben capito il tuo problema. O meglio,
prima parti con un certo tipo di problematica, e poi ti dirigi in
tutt'altra direzione...
Analizzando il documento posso apportare delle modifiche al template
utilizzando DOM.

Un primo approccio consisterebbe nel rintracciare il nodo e modificare
l'attributo.
Alla richiesta XmlHttpRequest asincrona, devo quindi associare una
funzione che intercetti, appunto, quel nodo e quell'attributo per poi
agire solo su di essi.
Ho pensato che incorporare lo script all'interno del documento stesso
rendesse questo approccio possibile.

Il documento e' sprovvisto di identificativi. Quindi non ci sono
attributi id ma solo classi per ogni elemento table presente. Questo
e' uno dei report che mostra la struttura del template:

<a name="sessions">&nbsp;</a><br />
<table class="aws_border" border="0" cellpadding="2" cellspacing="0"
width="100%">
<tr><td class="aws_title" width="70%">Visits duration </td><td
class="aws_blank">&nbsp;</td></tr>
<tr><td colspan="2">
<table class="aws_data" border="1" cellpadding="2" cellspacing="0"
width="100%">
<tr bgcolor="#ECECEC"><th>Number of visits: 27 - Average: 1268 s</
th><th bgcolor="#8888DD" width="80">Number of visits</th><th
bgcolor="#8888DD" width="80">Percent</th></tr>
<tr><td class="aws">0s-30s</td><td>3</td><td>11.1 %</td></tr>
<tr><td class="aws">30s-2mn</td><td>2</td><td>7.4 %</td></tr>
<tr><td class="aws">2mn-5mn</td><td>5</td><td>18.5 %</td></tr>
<tr><td class="aws">5mn-15mn</td><td>7</td><td>25.9 %</td></tr>
<tr><td class="aws">15mn-30mn</td><td>2</td><td>7.4 %</td></tr>
<tr><td class="aws">30mn-1h</td><td>3</td><td>11.1 %</td></tr>
<tr><td class="aws">1h+</td><td>5</td><td>18.5 %</td></tr>
</table></td></tr></table><br />

Quote:
Quotando quindi anche la tua prima problematica:

Vorrei capire se attraverso javascript e dom e' possibile scorrere il
documento e agire solo sulle tabelle che mi interessano.

Si, tramite le DOM API.
Ammesso che il documento sia "effettivamente" un documento, e non
una stringa (dato che lo recuperi tramite XHR). In tal caso, devi
usare le regexp (oppure, creare dalla stringa dei nodi effettivi,
agganciando il tutto al document tree).
La richiesta ritorna una stringa e non un DOM document object.
Per ricevere un oggetto DOM corrispondente al documento parsato dovrei
convertire l'html o un frammento di esso in XML.

Quote:
Ecco, non mi è ben chiaro come siamo passati da questo:

Quindi una
funzione che sfrutti getElementsByName, e agisca magari sull'attributo
width della tablella "pluto" tralasciando il resto.

A questo:

Sono daccordo che si possa adeguare il template tramite DOM ma, per
farlo, dovrei innestare lo script nella pagina prima che questa venga
visualizzata.
XSLT potrebbe essere una soluzione ma in rete non ho trovato molto.
Appunto. Convertire un frammento del DOM da HTML a documento XML.
La funzione importNode e' usata per clonare dei nodi e processarli
tramite XSLT.

Quote:
Immagino che mi manchi un passaggio (e non credo solo a me, visto
che anche Cristiano mi pare perplesso).
Forse non ci è ben chiaro il contesto in cui sei.

Praticamente vorrei applicare le modifiche al template prima che la
richiesta XHR venga soddisfatta.

Detta così, è una frase non solo concettualmente errata, ma anche
temporalmente errata.
Come puoi applicare le modifiche a qualcosa che ancora non hai?
Non so'. Andiamo passo passo. Penso di non riuscire a dare un quadro
generale. L'altro approccio ha sicuramente a che fare con questo:

http://www.soi.city.ac.uk/~sa386/ept...In%20Gecko.htm

Se il contesto non e' chiaro spero abbiate la pazienza di "aiutarmi a
spiegarmi"... al momento non so' come applicare i vostri spunti o come
creare una stringa di nodi da agganciare al document tree.




Reply With Quote
  #10  
Old   
ZER0
 
Posts: n/a

Default Re: modifica template preformattato da server - 12-14-2007 , 10:12 AM



On Fri, 14 Dec 2007 07:46:24 -0800 (PST), zachille wrote:

Quote:
Devo essere sincero, non ho ben capito il tuo problema. O meglio,
prima parti con un certo tipo di problematica, e poi ti dirigi in
tutt'altra direzione...

Analizzando il documento posso apportare delle modifiche al template
utilizzando DOM.
No, fermo. Sei già andato troppo avanti. Analizziamo passo passo la
questione.

Quote:
Un primo approccio consisterebbe nel rintracciare il nodo e modificare
l'attributo.
Alla richiesta XmlHttpRequest asincrona, devo quindi associare una
funzione che intercetti, appunto, quel nodo e quell'attributo per poi
agire solo su di essi.
Ho pensato che incorporare lo script all'interno del documento stesso
rendesse questo approccio possibile.
Tutto questo discorso non è per nulla chiaro; cerchiamo di capire i
soggetti in gioco.

Quote:
Questo e' uno dei report che mostra la struttura del template:

a name="sessions">&nbsp;</a><br /
table class="aws_border" border="0" cellpadding="2" cellspacing="0"
width="100%"
[cut]

Bene. Ma questo se ho capito bene (altrimenti correggimi), è quello
che ti restituisce la chiama XMLHttpRequest.
Ovvero una stringa, come dici qui (a meno che tu non ti stia invece
riferendo ad altro):

Quote:
La richiesta ritorna una stringa e non un DOM document object.
Di conseguenza presumo che la risposta alla chiamata XHR, ovvero la
suddetta stringa, tu la recuperi dalla proprietà "responseText" del
tuo oggetto XMLHttpRequest (e non da "responseXML" per intenderci).

Fin qui è tutto corretto?

Quote:
Per ricevere un oggetto DOM corrispondente al documento parsato dovrei
convertire l'html o un frammento di esso in XML.
Più che in XML, in HTML, se poi la tua intenzione è "appenderlo" al
documento HTML corrente.

E qui subentra la seconda domanda e chiarimento:
La richiesta XHR chi la fa? Una pagina HTML, presumo. Pagina che tu
puoi modificare (cosa che non puoi fare al template, se ho inteso).
Questa pagina HTML cosa ci deve fare, poi, del "template" una volta
che l'hai ottenuto?
A parte modificare la width o altro, fai conto di averlo già fatto,
cos'è che deve farci alla fin fine?

Ti ricordo comunque, dato che di stringhe stiamo parlando, che puoi
sempre usare le regexp.

Quote:
Ecco, non mi è ben chiaro come siamo passati da questo:

Quindi una
funzione che sfrutti getElementsByName, e agisca magari sull'attributo
width della tablella "pluto" tralasciando il resto.

A questo:

Sono daccordo che si possa adeguare il template tramite DOM ma, per
farlo, dovrei innestare lo script nella pagina prima che questa venga
visualizzata.
XSLT potrebbe essere una soluzione ma in rete non ho trovato molto.

Appunto.
Appunto.. cosa? Il passaggio non è chiaro. Stai dicendo due cose
differenti tra loro.
Inoltre abbiamo appurato che ciò che hai tu è una stringa (anche se
aspetto un'ulteriore conferma). Quindi così com'è non puoi usare né
le DOM API, né l'XSLT.

Quote:
Convertire un frammento del DOM
Tu non hai un frammento del DOM. Tu hai una stringa.
Al più devi prima convertire la stringa in frammento del DOM.

Quote:
da HTML a documento XML.
Ma una volta che hai l'HTML, perché vorresti convertirlo in XML? Se
poi devi aggiungere quell'HTML da qualche parte nel documento, deve
appunto essere HTML.

Quote:
La funzione importNode e' usata per clonare dei nodi e processarli
tramite XSLT.
Eh, stai tutt'ora andando troppo oltre. Torna indietro. Vanno prima
chiariti i passaggi precedenti.

Quote:
Praticamente vorrei applicare le modifiche al template prima che la
richiesta XHR venga soddisfatta.

Detta così, è una frase non solo concettualmente errata, ma anche
temporalmente errata.
Come puoi applicare le modifiche a qualcosa che ancora non hai?

Non so'. Andiamo passo passo.
E' quello che sto cercando di fare.

Quote:
Penso di non riuscire a dare un quadro
generale.
Dobbiamo riuscirci, invece.
Cerca di rispondere alle domande che ti ho fatto, mi aiuterebbe non
poco.

Quote:
Se il contesto non e' chiaro spero abbiate la pazienza di "aiutarmi a
spiegarmi"...
Vai tranquillo, siam qui.

Un ultima cosa: su quale/i browser deve girare il tutto?

--
~ "Chi ci priva della libertà in nome della sicurezza,
non si merita nessuna delle due cose, nè la libertà,
nè la sicurezza." (Henry Adams)



Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.