Maison >interface Web >js tutoriel >Comment puis-je accéder au contenu d'un iFrame à partir d'un autre domaine ?

Comment puis-je accéder au contenu d'un iFrame à partir d'un autre domaine ?

DDD
DDDoriginal
2024-12-23 15:04:14272parcourir

How Can I Access an iFrame's Content from a Different Domain?

Accès iFrame inter-domaines : une solution

Lorsque vous tentez d'accéder au contenu d'un iFrame à partir d'un domaine différent, vous pouvez rencontrer un Erreur « Autorisation refusée pour accéder à la propriété ». Ce problème est dû à la politique inter-domaines du navigateur, qui restreint l'échange de données entre domaines pour des raisons de sécurité.

Pour surmonter cette limitation, vous pouvez utiliser la méthode postMessage, disponible si vous contrôlez à la fois le site de cadrage et le contenu de l'iFrame. Cette méthode permet d'envoyer et de recevoir des messages entre les différents domaines.

Voici un exemple de mise en œuvre :

Site encadré (iframe.net) :

<script>
  window.onmessage = function(event) {
    event.source.postMessage(document.body.innerHTML, event.origin);
  };
</script>

Page principale (exemple.com) :

<script>
  window.onmessage = function(event) {
    alert(event.data);
  };
</script>

<!-- Trigger the message sending -->
<iframe>
document.getElementById('myframe').contentWindow.postMessage('', '*');

La méthode postMessage prend deux arguments : le message à envoyer et l'origine cible (le domaine pour recevoir le message). Dans cet exemple, nous utilisons '*' pour indiquer que le message peut être reçu par n'importe quel domaine.

Lorsque ce code est exécuté, le message contenant le corps de l'iFrame est envoyé du site encadré vers le site principal page, où il est affiché dans une boîte d'alerte. Cela montre comment contourner la politique inter-domaines et échanger des données entre les deux domaines à l'aide de la méthode postMessage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn