Комментарий: если вы хотите достичь передачи сообщений по перекрестному документу, вы должны сначала прослушать событие сообщения объекта Window, а затем использовать метод postmessage () объекта Window для отправки сообщений в другие окна. Далее, давайте представим это подробно. Заинтересованные друзья могут ссылаться на это.
Слушайте событие сообщения объекта Windowwindow.addeventlistener ("message", function (event) {
// обрабатывать код программы
}, ЛОЖЬ);
Используйте метод postmessage () объекта Window для отправки сообщений в другие окна. Определение этого метода заключается в следующем:
Другой window.postmessage (сообщение, Targettorigin);
В этом методе используются два параметра: первым параметром является отправленный текст сообщения, но он также может быть любой объект JavaScript (объект преобразуется в текст через JSON); Второй параметр - это URL -адрес окна объекта, который получает сообщение. Вы можете использовать подстановочный знак * для указания всех адресов в строке адреса URL -адреса, но рекомендуется использовать точный адрес URL. Другой Window - это ссылка на объект Window, который будет отправлен. Вы можете вернуть объект через метод window.open () или вернуть объект окна, приписываемый одному кадру, указав номер последовательности (индекс) или имени в массив Window.frames.
Пример
<! Doctype html>
<html>
<голова>
<meta charset = "utf-8"/>
<title> Образец основного документа для передачи сообщений по перекрестному документию </title>
<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) {
// Игнорировать сообщения, отправленные страницами, отличными от указанного URL.
if (event.origin! = "http://www.blue-butterfly.net") return;
оповещение (Event.data); // Показать сообщение.
}, ЛОЖЬ);
$ ("#iframecontent"). Load (function (event) {
// Отправить сообщение на подпаку
это [0] .postmessage ("hello", "http://www.blue-butterfly.net/test/");
});
});
</script>
</head>
<тело>
<заголовок>
<h1> Раздел перекрестной связи </h1>
</header>
<iframe src = "http://www.blue-butterfly.net/test/"> </iframe>
</body>
</html>
Код на подпаке выглядит следующим образом:
<! Doctype html>
<html>
<голова>
<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") return;
$ ("#console"). Append (event.origin) .append ("Сообщение от:") .append (event.data);
// Отправить сообщение на главную страницу.
event.source.postmessage («Привет, есть:» + this.location, event.origin);
}, ЛОЖЬ);
});
</script>
</head>
<тело>
<p> Это то, что находится в iframe. </p>
<div> </div>
</body>
</html>
• Прислушиваясь к событию сообщения объекта Window, вы можете получать сообщения.
• Доступа к свойству происхождения события сообщения, вы можете получить источник отправки сообщения (в этом примере, отправляющая источник главной страницы составляет, а отправка источника подпаги является). ПРИМЕЧАНИЕ. Адрес URL -адреса отправки источника и веб -сайта - это не та же концепция. Источник отправки включает только доменное имя и номер порта. Чтобы не получать сообщения, злобно отправленные другими источниками, лучше проверить источник отправки.
• Доступ к атрибуту данных события сообщения, можно получить содержимое сообщения (может быть любой объект JavaScript, используя JSON).
• Отправить сообщения с помощью метода postmessage ().
• Доступа к свойству источника события сообщения, вы можете получить прокси -объект окна источника сообщения.