PDA

View Full Version : [JScript] Elaborazioni sul DOM


Vecchia Spugna
31-08-2008, 09:55
Salve a tutti.

Sono niubbo con javascript, ma questo problema mi sembra paranormale.
La situazione è questa:

- carico l'index in un file che contiene in script i riferimenti a files esterni js e body vuoto.
- mi arriva tramite stringa una pagina xhtml bella precisa con tanto di css
- converto la stringa in dom grazie alla funzione sul sito del w3c (a questo punto aptana non mi riconosce bene la classe della mia variabile... e già sono perplesso, però i metodi ci funzionano, e poi.. il w3c è il w3c)
- faccio le mie belle sostituzioni tramite funzioni dom: sostituisco il body e aggiungo gli script
- visualizzo la pagina: i browsers non me la interpretano! ovvero: il body contiene delle liste... il browser visualizza solo testo! il title...lo visualizza nella window come stringa di testo. tutto il testo è tutto attaccato... niente di niente!.
Faccio notare che guardo tramite firefox web developer l'html che genera.. ed è giusto.. se io faccio copia e incolla dell'html generato su 1 file, lo rinomino .html e lo esegui su 1 browser questo funziona.

- faccio invece queste sostituzioni con innerHTML e me lo interpretano correttamente.


Bene.. volevo chiedere a voi esperti se questo è 1 problema noto, se è 1 problema di importazione da 1 documento esterno che non si può fare, se il document è in qualche modo bloccato, o se voi avete fatto tutto questo e io sto solo sbagliando programmazione.

Grazie mille a tutti !!

Necromachine
31-08-2008, 21:44
Beh, potresti postare il codice, così vediamo se magari hai sbagliato qualcosa nello script del dom :) .

Vecchia Spugna
01-09-2008, 09:21
//salvo gli script del documento precedente
scripts = document.getElementsByTagName("script");
//trasformo una stringa html in dom(tramite la funzione presa dal sito w3c
rec = GlobalXmlparser.xmlToDom(xmlstring);
//prendo head e body del documento originale
head = document.getElementsByTagName("head").item(0);
body = document.getElementsByTagName("body").item(0);
//prendo head del nuovo documento
rec_head = rec.getElementsByTagName("head").item(0);
//invece rimetto a stringa il body, per usarlo con innerHTML
rec_body = GlobalXmlparser.domToXml(rec.getElementsByTagName("body").item(0));

//elaboro l'head del documento come DOM
for(i=0; i<scripts.length; i++)
{//appendo i tag script
rec_head.appendChild(scripts.item(i));
}
//e sostituisco l'head precedente con quello a cui ho aggiunto gli elementi script
head.parentNode.replaceChild(rec_head, head);
//invece sul body faccio la sostituzione con innerHTML
body.innerHTML = rec_body;

document.close;

Benissimo.
Ora tramite firefox web developer posso guardare il codice creato.
il codice è corretto, sia per head che per body

però, mentre il body è visualizzato correttamente, l'head lui non me lo interpreta, ed ignora i css e title, che invece di scrivere nell'intestazione della pagina scrive nel corpo del documento (ripeto l'html relativo è corretto).


Grazie a tutti