Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    document.getElementById da un'altra pagina?

    Gentili Forumiani,

    mi rivolgo a voi con una piccola domanda. Con il seguente codice

    codice:
    <script type="text/javascript">
    x=document.getElementById("intro");
    document.write("<div>Questo è il mio contenuto: " + x.innerHTML + "</div>");
    </script>
    Posso mostrare un contenuto che risiede in un altro div

    codice:
    <div id="intro" style="display: none">Esempio di contenuto</div>
    Fin qui tutto bene. Ora al mio problema...
    Io vorrei avere due pagine HTML
    - Pagina1.html
    - Pagina2.html
    Vorrei mostrare il contenuto del div "intro" che risiede nella Pagina2.html sulla Pagina1.html ma non so come specificare nel codice di cercare il div "intro" nella Pagina2.html

    Qualcuno sa aiutarmi?

    Questo dovrebbe evitarmi di dover editare entrambe le pagine facendo un cambiamento nel contenuto del div intro. Di modo che se lo edito in Pagina2.html i cambiamenti vengono automaticamente applicati anche a Pagina1.html (e eventualmente altre).

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    con solo javascript non si può fare e non ha senso crearsi il problema di modificare il contenuto di un div se poi non può essere salvata la modifica.

    Mi spiego meglio ammettiamo che sia possibile prendere da doc1.html il contenuto di un div presente su doc2.html (cosa che non si può fare), e lo modifichi senza salvare nulla sul server. Quando aprirai doc2.html, visto che non hai salvato le modifiche è come se non avessi fatto niente.

    La soluzione è utilizzare ajax e una tecnologia lato server e gestire la permanenza dei dati tramite file o database.

  3. #3
    Peccato, ma grazie per la risposta.

    Per quanto riguarda il "non ha senso perchè non può essere salvata la modifica": la modifica non dovrebbe salvarsi in Pagina1. Se facessi cambiamenti in Pagina2, la Pagina1 verrebbe aggiornata in modo "dinamico" tramite lo script.

    Sarebbe una specie di iFrame ma usando Javascript.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    636
    Con javascript non si può interagire con gli iframe, ma questo mi sa che lo sai.
    Inoltre con javascript non si possono includere altri documenti, non si possono salvare file sul server, poco importa se il file è del documento attuale o di qualche file integrato.
    Con javascript non si lavora MAI sui file del server, ma su ciò che viene scaricato lato client ed è visualizzato sul browser, che non è la stessa risorsa ottenuta dal server.

  5. #5

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    E' possibile interagire con altre pagine del proprio dominio solo se queste hanno un name o sono imparentate... ovvero una e' stata aperta dall'altra.

    Se sono imparentate si puo' dalla figlia interagire con la madre tramite:

    opener.document. ...eccetera

    Invece si puo' interagire con una pagina in una finestra che abbia un name, cioe' che e' stata aperta tramite target="nomeFinestra" oppure tramite window.open('pagina.htm','nomeFinestra), tramite:

    window.open('','nomeFinestra').document. ...eccetera

    Il motivo per cui tu lo debba fare non e' importante
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Se ad esempio da pagina1.html devi estrarre un'introduzione da inserire in pagina2.html, devi costruire così la tua pagina2.html:

    codice:
    function getIntro() {
    	var	sSrc = this.responseText, sTargetId = /* Qui va l'id dell'elemento contenente l'intro! */ "intro",
    		rOpen = new RegExp("<\\s*([^\\s>]+)[^>]*\\s+id\\=[\"\']" + sTargetId + "[\"\'][^>]*>" ,"i"),
    		aExec = rOpen.exec(sSrc), sContent = "";
    
    	if (aExec) {
    		sContent = (new RegExp("(?:(?:.(?!<\\s*" + aExec[1] + "[^>]*[>]))*.?<\\s*" + aExec[1] + "[^>]*[>](?:.(?!<\\s*\/\\s*" + aExec[1] + "\\s*>))*.?<\\s*\/\\s*" + aExec[1] + "\\s*>)*(?:.(?!<\\s*\/\\s*" + aExec[1] + "\\s*>))*.?", "i")).exec(sSrc.slice(sSrc.indexOf(aExec[0]) + aExec[0].length)) || "";
    	}
    
    	/* sContent e' la tua intro */
    	alert(sContent)
    }
    
    var oReq = new XMLHttpRequest();
    oReq.open("GET", "pagina1.html", true);
    oReq.onload = getIntro;
    oReq.send(null);

  8. #8
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Scusa, il forum crea casini con le espressioni regolari. Come codice usa il contenuto di questo alert:

    codice:
    alert(unescape("function%20getIntro%28%29%20%7B%0A%09var%09sSrc%20%3D%20this.responseText%2C%20sTargetId%20%3D%20/*%20Qui%20va%20l%27id%20dell%27elemento%20contenente%20l%27intro%21%20*/%20%22intro%22%2C%0A%09%09rOpen%20%3D%20new%20RegExp%28%22%3C%5C%5Cs*%28%5B%5E%5C%5Cs%3E%5D+%29%5B%5E%3E%5D*%5C%5Cs+id%5C%5C%3D%5B%5C%22%5C%27%5D%22%20+%20sTargetId%20+%20%22%5B%5C%22%5C%27%5D%5B%5E%3E%5D*%3E%22%20%2C%22i%22%29%2C%0A%09%09aExec%20%3D%20rOpen.exec%28sSrc%29%2C%20sContent%20%3D%20%22%22%3B%0A%0A%09if%20%28aExec%29%20%7B%0A%09%09sContent%20%3D%20%28new%20RegExp%28%22%28%3F%3A%28%3F%3A.%28%3F%21%3C%5C%5Cs*%22%20+%20aExec%5B1%5D%20+%20%22%5B%5E%3E%5D*%5B%3E%5D%29%29*.%3F%3C%5C%5Cs*%22%20+%20aExec%5B1%5D%20+%20%22%5B%5E%3E%5D*%5B%3E%5D%28%3F%3A.%28%3F%21%3C%5C%5Cs*%5C/%5C%5Cs*%22%20+%20aExec%5B1%5D%20+%20%22%5C%5Cs*%3E%29%29*.%3F%3C%5C%5Cs*%5C/%5C%5Cs*%22%20+%20aExec%5B1%5D%20+%20%22%5C%5Cs*%3E%29*%28%3F%3A.%28%3F%21%3C%5C%5Cs*%5C/%5C%5Cs*%22%20+%20aExec%5B1%5D%20+%20%22%5C%5Cs*%3E%29%29*.%3F%22%2C%20%22i%22%29%29.exec%28sSrc.slice%28sSrc.indexOf%28aExec%5B0%5D%29%20+%20aExec%5B0%5D.length%29%29%20%7C%7C%20%22%22%3B%0A%09%7D%0A%0A%09/*%20sContent%20e%27%20la%20tua%20intro%20*/%0A%09alert%28sContent%29%0A%7D%0A%0Avar%20oReq%20%3D%20new%20XMLHttpRequest%28%29%3B%0AoReq.open%28%22GET%22%2C%20%22pagina1.html%22%2C%20true%29%3B%0AoReq.onload%20%3D%20getIntro%3B%0AoReq.send%28null%29%3B"));

  9. #9
    Grazie mille! Mi hai reso felice

  10. #10
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    FIgurati
    Ho notato però che c'è un piccolo bug che fa sì che se in pagina1.html c'è un commento del tipo la RegExp va a pescare quello. L'ho corretto e ho pubblicato la funzione corretta qui (e l'ho resa anche leggermente più sintetica...)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.