Hello,
J'explique la situation de base :
une page qui contient un iframe est chargée. L'iframe contient lui-même SON Js

Ce que j'aimerai faire :
Modifier au click le contenu du Js de l'iframe et recharger SEULEMENT l'iframe avec ce nouveau Js.

Avez-vous des idées sur la façon de s'y prendre, l'approche ?

Merci :)

9 réponses


Julienng
Réponse acceptée

Pourquoi ne pas utiliser les webworker ?
Cela te permettrait de gérer ton/tes script, peut importe qu'il vienne de l'iframe ou non, et sans avoir besoin de recharger ton iframe si le nom de la méthode reste identique.

betaWeb
Réponse acceptée

Tiens je suis justement entrain de lire un tutoriel sur les webworker: http://sdz.tdct.org/sdz/ml5-web-workers-le-monde-parallele-du-javascript.html :)

Salut,

Tu souhaites remplacer le JS ou juste le récupérer ?

J'ai cherché 30s sur google et je suis tombé sur ça, c'est un début de piste (je l'ai un peu remanié):

var iframe = document.querySelector("#iframeid").contentWindow;

Salut, je crois que l'une ou l'autre méthode est valide. L'objectif est de modifier à la volée avec des inputs text, des variables du JS en cours dans l'iframe et recharger cette iframe (pas la page web en cours) avec son nouveau JS.

Pour ce qui est de rafraîchir j'ai trouvé ceci :

function refreshIframe() {
    var ifr = document.getElementsByName('appView')[0];
    ifr.src = ifr.src;
}
 <button onclick="refreshIframe();">Refresh Iframe</button>
  <iframe name="appView"  src="AppProject/www/index.html"></iframe>

=> Maintenant ce qui m'intéresse c'est de modifier à la volée le JS, avant de rafraîchir.
PS: Précision j'ai accès au JS de l'iframe puisqu'il est dans le même dossier, ce n'est pas un iframe "externe" au site.

Une méthode à laquelle j'ai pensée :

  • Mettre le script de l'iframe "inline" dans la page dans une div cachée
  • L'insérer dans le Head de l'iframe avec jquery
  • Ainsi je peux modifier directement le script js à la volée avec jquery sur la page en cours, l'insérer dans le head de l'iframe et recharger l'iframe, mais c'est peut-être pas la manière la plus simple de faire :)

Ca me semble plus qu'approprié. Je ne connaissais pas ... Faut que je me familiarise avec ce truc :) Un lien pertinent et utile pour faire connaissance avec les webworkers ?

Dans la partie resource du précécent lien, j'ai tendance à regarder du côté de mozilla

Il y a un / en trop sur ton lien :)

@julienng Corrigé, merci ;)

@betaWeb, @julienng, merci pour la découverte. Je vais explorer ça avec intérêt. Si je parviens à code simple et utilisable sur mon sujet avec les workers, je reviens le poster ici.