web-dev-qa-db-fra.com

Attendez que l'iframe se charge en JavaScript

J'ouvre un iframe en JavaScript:

righttop.location = "timesheet_notes.php";

et souhaitez ensuite lui transmettre des informations:

righttop.document.notesform.ID_client.value = Client;

Évidemment, cette ligne ne fonctionnera pas tant que la page ne sera pas complètement chargée dans l'iframe et que cet élément de formulaire sera là pour être écrit.

Alors, quelle est la meilleure façon/la plus efficace de résoudre ce problème? Une sorte de boucle de timeout? Idéalement, j'aimerais vraiment que tout soit contenu dans ce script particulier, plutôt que d'avoir à ajouter des éléments supplémentaires à la page qui est ouverte.

34
Bill Dawes

Tout d'abord, je pense que vous êtes censé affecter la propriété src des iframes, pas location. Deuxièmement, connectez l'événement load de l'iframe pour effectuer vos modifications:

var myIframe = document.getElementById('righttop');
myIframe.addEventListener("load", function() {
  this.contentWindow.document.notesform.ID_client.value = Client;
});
myIframe.src = 'timesheet_notes.php';

Encore une fois, tout cela suppose que vous voulez dire i frame, pas des framesets.

61
Crescent Fresh

Je suppose que vous pouvez le faire assez facilement avec jQuery ... jQuery Home Accrochez simplement la page à jQuery $ function ()... par ex.

$(document).ready(function() { 
$('iframe').load(function() { 
   // write your code here....
}

Jetez un coup d'œil à l'exemple du téléchargeur de fichiers ici: tilisation d'iframes pour plusieurs téléchargements de fichiers ...

6
rajesh pillai

essaye celui-là...

$('iframe').each(function() { 
    $(this).ready(function() {
        $('#result').html("ready");
    });
});
0
Yuda Prawira