1

私はjQueryを学ぼうとしています。簡単なpostMessageクライアントを作りたいと思っています。jqueryでラップすることは可能ですか?最初のアラートは機能しますが、2番目のアラートは機能しません。

このコードを変更しようとしています: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);
    }
});

編集:これを行うために利用できるプラグインがたくさんあることは知っていますが、私はこれを学習プロセスとして行っています。

4

2 に答える 2

0

postMessage の 2 番目の引数が必須になりました。コードは次のように変更できます。

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

自分のウィンドウに投稿しているため、これは機能します。別のウィンドウに投稿するには、次を使用します。

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

参考文献:

幸運を!

于 2011-06-17T21:19:47.847 に答える
0

postMessage異なるページまたはウィンドウ (または iframe) 間の通信に使用されます。同じウィンドウにメッセージを投稿しています。ご覧のとおり、何も起こりません。

元のブログ投稿に戻ると、作成者は 2 つの iframe を作成して表示し、その間にメッセージを投稿しています。

于 2011-06-10T17:39:53.957 に答える