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

    Caricamento dall'esterno di contenuto in iframe

    Carissimi ho un problema col javascript da risolvere... D'altronde, come premessa, io e javascript non andiamo mai d'accordo!
    Dunque devo mettere su un sito un link che mi permetta di aprire un altro sito in una nuova finestra.
    Il link è di questo genere (di seguito si capisce il perché):
    codice:
    Clicca qui
    Il problema è che il document del sito da aprire contiene un iframe del tipo seguente:
    codice:
    <iframe name="nome_iframe" src="pagina_default.php"></iframe>
    nel quale iframe devo caricare una pagina che gli indico io e non la pagina di default.

    Allora ho pensato di modificare l'attributo 'src' dell'oggetto iframe a partire dalla pagina in cui è contenuto il link di sopra tramite la funzione che riporto sotto:
    codice:
    <script type="text/javascript">
    	function ApriSito(codice) {
    		var subWindow = window.open("http://www.sito_da_aprire.it", "nomefinestra");
    		subWindow.document.nome_iframe.src = "http://www.sito_da_aprire.it/page.php?parametro=" + codice;
    	}
    </script>
    Ma il tutto non funziona, perché mentre viene eseguita la funzione che modifica l'attributo 'src' dell'iframe il document nella subWindow non ha avuto ancora tempo di caricarsi del tutto.
    Pertanto quando si cerca di modificare l'attributo 'src' non è stato ancora creato l'oggetto iframe e per questo risulta in quel momento ancora null.

    Come devo fare per risolvere questo problema? Cosa mi consigliate?
    "Non basta una vita per conoscere se stessi, figurarsi per conoscere gli altri"

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non e' questione di temporizzazione,
    questo e' cross-domains scripting, cerchi di accedere a documenti appartenenti a dominio diverso da quello in cui viene eseguito lo script e restituira' sempre un errore di accesso negato

  3. #3

    Non sono molto convinto...

    Grazie Xinod,
    sono d'accordo con te, ma io insisto sul fatto che ci sia a monte anche un problema di temporizzazione in quanto nemmeno sullo stesso dominio funziona... Né in locale sul mio PC.

    Magari, giusto per provare (perché altrimenti sarebbe orribile!), e per capire se c'è in realtà un problema di temporizzazione, metterei un delay prima dell'esecuzione della riga che modifica l'attributo 'src' dell'iframe.
    Ma ho visto che nel core del javascript non c'è nessuna funzione che permetta un ritardo... dovrei ritardare l'esecuzione di quella riga magari con setTimeout().
    Che ne dici?
    "Non basta una vita per conoscere se stessi, figurarsi per conoscere gli altri"

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649

    Re: Caricamento dall'esterno di contenuto in iframe

    siamo d' accordo, tieni presente che non funzionera' se il dominio e' esterno

    il
    codice:
    setTimeout("nomeFinestra.frames['nome_iframe'].src = 'http://www.sito_da_aprire.it/page.php?parametro=" + codice+"'",3000);
    spero corretto
    ciao

  5. #5
    Strano ma vero Xinod, ha funzionato, quindi non era un problema di cross-domains scripting.
    Ho dovuto modificare il codice che mi hai postato perché c'era qualche imperfezione e inoltre ho inserito un setTimeout per vedere se c'era un probabile problema di temporizzazione. Ebbene sì. Aspettando che la nuova finestra si aprisse e che il contenuto venisse caricato interamente sono riuscito a far caricare nell'iframe ciò che volevo io.
    Ovviamente non potrò comunque utilizzare setTimeout in quanto, oltre ad essere nella fattispecie una soluzione da pessimo programmatore, il tempo di caricamento della pagina nella nuova finestra varierà da client a client.
    Quindi ho risolto diversamente... ma è sorto un altro problema dovuto sempre alla mia incompatibilità col JavaScript!

    Perché quando scrivo:
    codice:
    window.document.frames["nome_iframe"].location.href = "http://www.nome_sito.it";
    IE lo accetta mentre FireFox no?
    Non riesco ad accedere all'oggetto 'nome_iframe' con FireFox... ho sbagliato qualcosa nella gerarchia?

    Grazie 1000.
    "Non basta una vita per conoscere se stessi, figurarsi per conoscere gli altri"

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da SuperJepy
    ho sbagliato qualcosa nella gerarchia?
    si'
    non fa parte di document se vi accedi come frame, quindi
    window.frames["nome_iframe"].location.href = "http://www.nome_sito.it";

    se invece volessi passare per il document non puoi riferirti ad esso come elemento di frames, ma, specificando un id per l' iframe, con
    window.document.getElementById("id_iframe").conten tWindow.location.href="http://www.nome_sito.it";

    ciao

  7. #7
    Ecco perché! Grazie 1000, Xinod, gentilissimo!
    Fatto sta che con queste gerarchie non metterò mai ordine nel mio cervello!
    Né IE mi è di aiuto dato che così come avevo fatto, sebbene errato, lo accettava.
    Grazie ancora, vado a provare, ciao.
    "Non basta una vita per conoscere se stessi, figurarsi per conoscere gli altri"

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 © 2024 vBulletin Solutions, Inc. All rights reserved.