Перенос postMessage в jQuery

#jquery #postmessage

#jquery #postmessage

Вопрос:

Я пытаюсь изучить jQuery, я хочу создать простой клиент postMessage. Возможно ли обернуть это в jquery? Первое предупреждение работает, а второе — нет.

Я пытаюсь изменить этот код:http://austinchau.blogspot.com/2008/11/html5-cross-document-messaging.html

 $(document).ready(function() {

   $('#submit_button').click(function() {
      var data = $('#message').val();
      window.postMessage('1st'   data);
      alert(data);
   });

    var onmessage = function(e) {
      var data = e.data;
      var origin = e.origin;
      document.getElementById('display').innerHTML = data;
      alert('2nd'   data);
    };

    if (typeof window.addEventListener != 'undefined') {
      window.addEventListener('message', onmessage, false);
    } else if (typeof window.attachEvent != 'undefined') {
      window.attachEvent('onmessage', onmessage);
    }
});
  

Редактировать: я знаю, что для этого доступно много плагинов, но я делаю это в процессе обучения.

Ответ №1:

postMessage используется для обмена данными между различными страницами или окнами (или фреймами iframes). Вы отправляете сообщение в то же окно. Как вы видели, ничего не происходит.

Если вы вернетесь к исходному сообщению в блоге, автор создаст и отобразит два iframe, а затем разместит сообщения между ними.

Ответ №2:

Теперь требуется второй аргумент для postMessage. Ваш код может быть изменен на этот:

    window.postMessage('1st'   data, document.location);
  

Который работает, потому что вы публикуете в своем собственном окне. Чтобы отправить сообщение в другое окно, используйте это:

    popup = window.open('http://example.com/');
   popup.postMessage("Hi!", 'http://example.com/')
  

Дальнейшее чтение:

Удачи!