Comentário: Se você deseja obter a transmissão de mensagens de documentos cruzados, primeiro deve ouvir o evento de mensagem do objeto da janela e, em seguida, use o método PostMessage () do objeto da janela para enviar mensagens para outros Windows. Em seguida, vamos apresentá -lo em detalhes. Amigos interessados podem se referir a ele.
Ouça o evento de mensagem do objeto da janelawindow.addeventListener ("message", function (event) {
// Lidar com o código do programa
}, false);
Use o método PostMessage () do objeto de janela para enviar mensagens para outros Windows. A definição desse método é a seguinte:
outrowindow.postMessage (mensagem, Targetorigin);
Este método usa dois parâmetros: o primeiro parâmetro é o texto da mensagem enviado, mas também pode ser qualquer objeto JavaScript (o objeto é convertido em texto através do JSON); O segundo parâmetro é o endereço da URL da janela do objeto que recebe a mensagem. Você pode usar o WildCard * para especificar todos os endereços na sequência de endereço da URL, mas é recomendável usar um endereço URL preciso. Otherwindow é uma referência ao objeto da janela a ser enviado. Você pode retornar o objeto através do método window.open () ou retornar o objeto da janela atribuído a um único quadro especificando um número de sequência (índice) ou nome na matriz Window.frames.
Exemplo
<! Doctype html>
<html>
<head>
<meta charset = "utf-8"/>
<title> Exemplo de documento principal para transferência de mensagem de documentos cruzados </ititle>
<script type = "text/javascript" src = "http://code.jquery.com/jquery-1.6.4.min.js"> </script>
<script type = "text/javascript">
$ (function () {
// Ouça eventos de mensagem.
window.addeventListener ("message", function (event) {
// ignora as mensagens enviadas por páginas diferentes do URL especificado.
if (event.origin! = "http://www.blue-butterfly.net") retornar;
alerta (event.data); // Mostrar mensagem.
}, false);
$ ("#ifRameContent"). Load (function (event) {
// Envie uma mensagem para a subpagem
este [0] .PostMessage ("Hello", "http://www.blue-butterfly.net/test/");
});
});
</script>
</head>
<Body>
<header>
<h1> Seção da comunicação entre domínios </h1>
</header>
<iframe src = "http://www.blue-butterfly.net/test/"> </frame>
</body>
</html>
O código na subpagem é o seguinte:
<! Doctype html>
<html>
<head>
<meta charset = "utf-8"/>
<script type = "text/javascript" src = "http://code.jquery.com/jquery-1.6.4.min.js"> </script>
<script type = "text/javascript">
$ (function () {
window.addeventListener ("message", function (event) {
if (event.origin! = "http: // lulingniu") retornar;
$ ("#console"). Append (event.origin) .append ("mensagem de:") .append (event.data);
// Envie uma mensagem para a página principal.
event.source.postMessage ("Olá, existe:" + this.Location, event.origin);
}, false);
});
</script>
</head>
<Body>
<p> Isso é o que está no iframe. </p>
<div> </div>
</body>
</html>
• Ao ouvir o evento de mensagem do objeto da janela, você pode receber mensagens.
• Ao acessar a propriedade Origin do evento de mensagem, você pode obter a fonte de envio da mensagem (neste exemplo, a fonte de envio da página principal é e a fonte de envio da subpagem é). Nota: O endereço da URL da fonte de envio e do site não são o mesmo conceito. A fonte de envio inclui apenas o nome de domínio e o número da porta. Para não receber mensagens enviadas maliciosamente por outras fontes, é melhor verificar a fonte de envio.
• Ao acessar o atributo de dados do evento de mensagem, o conteúdo da mensagem pode ser obtido (pode ser qualquer objeto JavaScript, usando JSON).
• Envie mensagens usando o método PostMessage ().
• Ao acessar a propriedade de origem do evento de mensagem, você pode obter o objeto proxy da janela da fonte da mensagem.