80 votes

définir dynamiquement la src de l'iframe

J'ai un programme qui va définir dynamiquement une src iframe pour charger les pages. J'ai besoin d'accrocher un gestionnaire d'événement pour la page complètement chargée. Comment puis-je le faire ? Merci !

126voto

simonbs Points 2875
<script type="text/javascript">
function iframeDidLoad() {
    alert('Done');
}

function newSite() {
    var sites = ['http://getprismatic.com',
                 'http://gizmodo.com/',
                 'http://lifehacker.com/']

    document.getElementById('myIframe').src = sites[Math.floor(Math.random() * sites.length)];
}    
</script>
<input type="button" value="Change site" onClick="newSite()" />
<iframe id="myIframe" src="http://getprismatic.com/" onLoad="iframeDidLoad();"></iframe>

Exemple à http://jsfiddle.net/MALuP/

7 votes

Le lien dans cette réponse est maintenant cassé. Il pourrait être utile de le retélécharger à l'adresse suivante jsfiddle.net et postez ensuite un lien vers cette page.

1 votes

Bonne idée. Je viens de le changer.

19voto

Deepika Points 120

Essayez ça :

top.document.getElementById('AppFrame').setAttribute("src",fullPath);

15voto

Sunny Points 51

Essayez ceci...

function urlChange(url) {
    var site = url+'?toolbar=0&amp;navpanes=0&amp;scrollbar=0';
    document.getElementById('iFrameName').src = site;
}

<a href="javascript:void(0);" onClick="urlChange('www.mypdf.com/test.pdf')">TEST </a>

3voto

Suor Points 812

Vous devez également prendre en compte le fait que dans certaines versions d'Opera, onload est déclenché plusieurs fois et ajouter quelques crochets :

// fixing Opera 9.26, 10.00
if (doc.readyState && doc.readyState != 'complete') {
    // Opera fires load event multiple times
    // Even when the DOM is not ready yet
    // this fix should not affect other browsers
    return;
}

// fixing Opera 9.64
if (doc.body && doc.body.innerHTML == "false") {
    // In Opera 9.64 event was fired second time
    // when body.innerHTML changed from false
    // to server response approx. after 1 sec
    return;
}

Code emprunté à Ajax Upload

0 votes

De plus, si vous utilisez jQuery, vous pouvez lier le gestionnaire d'événement de chargement pour l'iframe. $('iframe').load(function (){ ...do smth... })

1voto

Headshota Points 11302

Essayez ça :

document.frames["myiframe"].onload = function(){
   alert("Hello World");
}

0 votes

Document.frames n'est pas un langage JavaScript valide. parent.frames pourrait être une option cependant... mais il semble que la meilleure façon d'accéder aux iframes en JavaScript est effectivement avec getElementById.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X