12
votes

Créer dynamiquement un iframe et attacher l'événement surcharger

J'ai créé une iframe de manière dynamique et j'ai ajouté un attribut src à celui-ci. Ensuite, j'ai annexé cet iframe au corps de la page. Sachez que je souhaite joindre un événement sur charnade sur iframe pour lire le contenu de l'iframe. Quelqu'un peut-il suggérer comment puis-je faire cela? XXX


0 commentaires

4 Réponses :


-2
votes

Je doute que vous puissiez joindre un événement surload à un iframe. Cela ne fonctionnera pas sur tous les navigateurs. Vous pouvez surtout vérifier si l'iframe a été chargé par: xxx

ou utilisez AJAX pour charger le contenu de votre conteneur. Avec Ajax, vous pouvez définir un événement complet-complet.


3 commentaires

Essayez Onload = "Retour Function_Name ();"


Et si vous voulez prendre les choses entre vos mains et compliquer un peu, vous pouvez faire une minuterie périodique qui se souvient du document.body.innerhtml d'un iframe et tire votre propre événement à chaque fois que cela change. Si vous n'en avez pas besoin qu'une fois, vous pouvez détruire la minuterie après avoir tiré un événement.


Ajouter iframe.Onload Lister Pour vérifier le chargement



15
votes

Certains navigateurs ont l'événement surload pour une iframe, vous devriez d'abord essayer de l'attacher avant de définir l'attribut SRC de l'iframe.

J'éviterais de l'utiliser complètement depuis dans certains navigateurs, cela pourrait ne pas tirer dans certaines conditions (par exemple, la cible était en cache dans IE). p>

Vous pouvez utiliser une minuterie pour vérifier si le préreyState de Contentwindow's Contentwindow est complet P>

var inter = window.setInterval(function() {
    if (frame.contentWindow.document.readyState === "complete") {
      window.clearInterval(inter);
      // grab the content of the iframe here
    }
}, 100);


2 commentaires

Cela ne fonctionne pas pour moi car l'iframe est dans une autre origine, je reçois SecurityError: bloqué une image avec origine " localhost " de accéder à une image d'origine croisée.


Vous êtes correct, cela ne fonctionnera en effet que avec les mêmes cadres d'origine. Il pourrait être plus sûr d'assumer la fenêtre.LoLoLoad fonctionnalité est meilleur aujourd'hui, en fonction des navigateurs que vous envisagez de soutenir.



0
votes

Je viens d'essayer cela et ça a fonctionné en chrome: xxx

w3school dit contentwindow est pris en charge dans tous les grands navigateurs.


1 commentaires

Je crois (w3school) eux, des milliers d'autres n'entraîneraient



0
votes

Vous pouvez ajouter un charge événement auditeur à l'iframe's ContentWindow , qui est juste comme n'importe quel autre .

voici un exemple : xxx


0 commentaires