84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
文字列化されたオブジェクトを含むメッセージを送信することで、2 つの React アプリケーションが通信できるようにしようとしています。
親 (http://localhost:3000) は、postMessage を介して次のようなメッセージを送信します:
postMessage
iFrame (http://localhost:3001) は、少なくともすぐにはメッセージを受信しません (ログが表示されるまで反応ソフト更新を待つ必要があります)。
スローされる最初のエラー:
これは、この postMessage() メソッドを呼び出したとき、iframe ドキュメントがまだ読み込まれていないため、受信する contentWindow は元の about:blank# であるためです。 ## ドキュメントの 1 つが、あなたが期待していたものではありません。
postMessage()
contentWindow
about:blank# であるためです。 ## ドキュメントの 1 つが、あなたが期待していたものではありません。
about:blank (たとえそれがグローバル ドキュメントの origin で postMessage()) を確認してください。
(たとえそれがグローバル ドキュメントの
で
) を確認してください。
<iframe> の load イベントを待ちます。 (申し訳ありませんが、私は ReactJS 忍者ではないので、これを行うための最良の方法を見つけてもらいます)。
の
イベントを待ちます。 (申し訳ありませんが、私は ReactJS 忍者ではないので、これを行うための最良の方法を見つけてもらいます)。
https://jsfiddle.net/382pz5er/ (StackSnippet の null オリジン フレームがここでは悪い例であるため、外部委託されています)。
これは、この
ここでのエラー メッセージは少しわかりにくいと言う人もいるかもしれません。開発ツールは、場所のソースがpostMessage()
メソッドを呼び出したとき、iframe ドキュメントがまだ読み込まれていないため、受信するcontentWindow
は元のabout:blank# であるためです。 ## ドキュメントの 1 つが、あなたが期待していたものではありません。
about:blank
しかし、とにかく、問題を解決するには、(たとえそれがグローバル ドキュメントの
originで
postMessage()) を確認してください。
<iframe>
これは、ソリューションを適用した簡単な再現セットアップです:の
loadイベントを待ちます。 (申し訳ありませんが、私は ReactJS 忍者ではないので、これを行うための最良の方法を見つけてもらいます)。
https://jsfiddle.net/382pz5er/ (StackSnippet の null オリジン フレームがここでは悪い例であるため、外部委託されています)。