Newsgroup: it.comp.lang.javascript
Titolo: frame e codice sorgente

mettiamo che abbia una pagina con 2 frames. nel primo ï¿œ collegato un 
html con una serie di link a varie pagine giï¿œ pronte (es. degli 
esercizi). Cliccando su ogni link voglio mostrare nell'altro frame 
l'html sorgente di quelle pagine.
Grazie

 l'html sorgente di quelle pagine.
<a href="#" onclick="top.frames
['nomedeltuoframe'].location.href='tuapagina.htm';return false" ...>...</
a>
Altrimenti esiste l'attributo target, ma è obsoleto; idem per il tag base:
 
http://www.w3.org/TR/html401/present/frames.html#adef-target

 ha scritto:


 (il contenuto del file diciamo)
ah
scusa, non avevo letto bene.
Client-side non credo si possa, almeno in ambiente internet e cross-
browser.
Potresti recuperare la pagina server-side (via link, oppure via "ajax") e 
scrivere così il sorgente nel frame (sul come, devi chiedere nel 
newsgroup che tratta la tecnologia server-side che hai a disposizione, 
solitamente sono poche righe di codice)

 Il Tue, 01 Sep 2009 07:59:20 +0000, ricado ha scritto:


 L'esercizio è solo html e javascript :)
intendi solo client-side? non credo si possa avere *esattamente* il 
sorgente.
puoi usare document.documentElement.innerHTML, dovrebbe darti (se non 
ricordo male) dall'head in poi.

 Il Tue, 01 Sep 2009 09:30:03 +0000, ricado ha scritto:


 partire dall'url? Non si può?
Per avere l'html devi prima avere la pagina (per questo ti consigliavo di 
recuperare la pagina server-side ...). Nella tua pagina potresti, 
window.onload,scrivere p.e. in un div l'html della pagina stessa (con il 
comando che ti ho indicato).
Oppure dovresti aprire l'url in un frame nascosto, e sempre onload andare 
a scrivere l'html dentro un tag del tuo frame (ricordo però qualche 
menata con gli ultimi IE per i frame nascosti, va testato).

 Il Tue, 01 Sep 2009 10:36:41 +0000, ricado ha scritto:


 primo una serie di link
nel primo frame apri l'url normalmente
nel secondo frame, window.onload della pagina che apri:
 - mettici un div con id="source"
 - recuperi un riferimento al div:
http://www.criosoftware.it/default14.aspx
 - ci scrivi dentro (innerHTML) il "sorgente", usando documentElement 
come ti ho indicato
Come soluzione non è il massimo perché finché non è aperta comparirà la 
pagina, poi ci sarà un div con il contenuto. Partendo da questo 
"scheletro" poi potrai, per esempio, mettere tutto il contenuto della 
pagina in un div, così sempre window.onload potrai nasconderlo.
Se invece usi un frame nascosto la logica è la stessa: apri la pagina nel 
frame nascosto, window.onload scriverai nel div che si trova nel tuo 
frame.
p.s. hai accesso alle pagine di cui vuoi visualizzare il sorgente, vero? 
Non è che si trovano in domini diversi? (in tal caso non puoi far nulla 
per problemi di sicurezza:
https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript
)

Quindi nel primo frame setto il src del secondo OK
Poi nella pagina che contiene i due frame ho fatto:
function init()
{
	var frame2 = document.getElementById("frame2");
	frame2.onload = function()
	{
		var doc = frame2.contentWindow.document;
		var textarea = doc.createElement("TEXTAREA");
		textarea.value = doc.documentElement.innerHTML;
		doc.body.innerHTML = "";
		doc.body.appendChild(textarea);
	}
}
window.onload = init;
var doc = frame2.contentWindow.document;
mi funziona solo su FF e non su IE. idee?

 IE. idee?
Per accedere all'oggetto document dovrebbe bastare
 var doc=frame2.document;

 Il Tue, 01 Sep 2009 13:55:00 +0000, ricado ha scritto:


 ha scritto:


 var frame2 = document.getElementById("frameAAA");
con quanto sopra recuperi un riferimento al *TAG* frame, non ottieni un 
oggetto window contenuto nel frame ...
 var frame2=top.frames["frameAAA"];
(dove frameAAA è il name)

 pare non vada frame2.onload. ho risolto con xmlhttprequest...
sempre per quanto risposto all'altra domanda: frame2, recuperato in quel 
modo, non è l'oggetto window ma il tag.