recherche

Maison  >  Questions et réponses  >  le corps du texte

problème inter-domaines iframe

<p>Supposons que j'ai un site Web appelé example.com avec une iframe intégrée dans le domaine iframe.net, je souhaite maintenant lire le contenu de l'iframe et transmettre certains paramètres pour afficher un message texte. J'aime utiliser le nom d'utilisateur Salut. </p> <p>Maintenant, le problème est que cela ne peut pas établir de connexion entre les deux ou même obtenir le HTML interne de l'iframe que j'utilise ci-dessous</p> <pre class="brush:php;toolbar:false;">document.getElementById('myframe').contentWindow.document.body.innerHTML;</pre> <p>L'erreur "L'autorisation d'accès à la propriété est refusée" est générée</p> <p>Est-ce que quelqu'un sait lire et écrire sur des plateformes inter-domaines</p>
P粉939473759P粉939473759527 Il y a quelques jours551

répondre à tous(2)je répondrai

  • P粉092778585

    P粉0927785852023-08-25 08:07:08

    Dans Internet Explorer 8, les événements passés en paramètres peuvent être null, c'est pourquoi vous devez accéder aux événements différemment :

    Dans frame.html :

    window.onmessage = function(event) {
       var evt = event || window.event;
       evt.source.postMessage('Message from iFrame', evt.origin);
    };

    sur main.html :

    window.onmessage = function(event) {
       var evt = event || window.event;
       alert(evt.data);
    };

    L'événement est déclenché de la même manière que celui présenté par Rob W :

    document.getElementById('frameId').contentWindow.postMessage('message','*');

    répondre
    0
  • P粉670838735

    P粉6708387352023-08-25 00:50:36

    Si vous ne contrôlez pas le cadrage du site Web, vous ne pouvez pas contourner la politique d'origine croisée.

    Si vous contrôlez les deux sites, vous pouvez utiliser la méthode postMessage de transfert de données entre domaines. Un exemple très basique :

    // framed.htm:
    window.onmessage = function(event) {
        event.source.postMessage(document.body.innerHTML, event.origin);
    };
    
    // Main page:
    window.onmessage = function(event) {
        alert(event.data);
    };
    
    // Trigger:
    // <iframe id="myframe" src="framed.htm"></iframe>
    document.getElementById('myframe').contentWindow.postMessage('','*');

    répondre
    0
  • Annulerrépondre