1

postMessageを使用して、ホストとドメインのiframeの間で通信します。

hostdomain.orgのコードは次のとおりです。

function rec_tyd(json_var)
{
  //if i decode and alert json_var there i get the content.
  var win = document.getElementById("tyd_frame").contentWindow;
  win.postMessage(json_var, "http://multipress.fr/tyd//module/pro_mod.php");
}

<iframe src="http://example.org/myiframe.php" width="500" height="200" 
name="tyd_frame" id="tyd_frame" style="border:1px solid black;"</iframe>

json_varはJSONオブジェクトです。

そして、私のドメインのコードexample.org/myiframe.phpは次のとおりです。

if (!window.addEventListener)   // IE
  {window.addEventListener = function (type, listener, capt) {
  attachEvent("on"+type, function(){listener(event)});}
}

addEventListener("message", function(e) {       
  var final = JSON.parse(e.data);
  alert(final.id_product);
  alert(final.id_company);
}, false);

基本的に、以下を除いてすべてが機能しています。

  • 最初の読み込みでは、iframeに何も表示されません
  • 一度リロードすると、値が得られます
  • ホストページを更新しても、何も表示されません。

ChromeとFireFoxでも同じことが言えます。更新は機能しませんが、アドレスバーに移動してEnterキーを押すと機能します。初めてを除いて。

JSONオブジェクトを確認し、ポストメッセージの前に取得しました。何も得られないのは本当にiframeです。

だから私の質問は:私が何かを得ていることをどのようにテストできますか?コードを間違えましたか?

現在、私は実際に同じドメインで作業していますが、本番用に別のドメインで作業する予定です。

4

1 に答える 1

0

コメントで解決:)

==>ドキュメントの準備ができたらpostMessageの起動を停止しますが、iframeのonloadステータスにすると、問題は修正されたようです。ありがとう

于 2018-04-24T07:13:46.427 に答える