将Javascript对象传递给HTML iframe(作为对象)

时间:2016-03-17 09:08:13

标签: javascript html iframe scope arguments

MainWindow创建一个ChildWindow需要利用的JavaScript对象。

我的MainWindow.html目前看起来像这样

<html>
  <body>
    <script>
      var varObject = {type:"Error", message:"Lots"};
    </script>
    <iframe class="child" src="ChildWindow.html"></iframe>
  </body>
</html>

ChildWindow.html看起来像这样

<html>
  <body>
    <script>
      console.log(varObject.type); // goal is to log "Error"
    </script>
  </body>
</html>

ChildWindow正在尝试使用在MainWindow中创建的对象,当然它不能,因为我还不知道如何通过它。

我已尝试使用Google,但我发现的大多数解决方案都将值作为字符串而不是变量传递。

3 个答案:

答案 0 :(得分:3)

可以通过将对象分配给iframe的window来简单地传递对象。

父窗口中的

var frame = document.querySelector("iframe");
frame.contextWindow.object_of_interest = object_of_interest;
在iframe的窗口中

console.log(window.object_of_interest);

答案 1 :(得分:2)

您应该使用window.postMessage向您网站中嵌入的iFrame发送消息。

答案 2 :(得分:1)

请查看以下代码:

<html>
  <body>
    <script>
      var varObject = {type:"Error", message:"Lots"};
      var child = document.getElementsByClassName("child")[0];
      var childWindow = child.contentWindow;
      childWindow.postMessage(JSON.stringify(varObject),*);
    </script>
    <iframe class="child" src="ChildWindow.html"></iframe>
  </body>
</html>

在ChildWindow.html

<html>
  <body>
    <script>
      function getData(e){
        let data = JSON.parse(e.data);
        console.log(data);
      }
      if(window.addEventListener){
        window.addEventListener("message", getData, false);
      } else {
        window.attachEvent("onmessage", getData);
      }
    </script>
  </body>
</html>

希望有所帮助:)